Comments 12
Скажите, пожалуйста, а зачем по таймеру на каждую задачу? Ведь все таймеры в данном случае делают одно и тоже. Почему бы просто не проходить раз в секунду по всем элементам и обновлять значение?
0
Там и есть только один таймер, который обновляет временные метки всех задач.
0
а как тогда вот это понимать:
Увеличение количества таймеров приводит к худшей отзывчивости UI и большему потреблению батареи. Каждый таймер пытается исполниться точно в отведённое ему время, так как по умолчанию его допуск (tolerance) равен нулю.?
0
А чуть ниже, в том же разделе написано:
Посмотрите повнимательнее логику создания таймера и метод, который который он вызывает при срабатывании, все станет ясно.
Запустите приложение. В этом конкретном случае эффект будет неочевиден (у нас только один таймер), однако в реальной ситуации нескольких таймеров ваши пользователи получат более отзывчивый интерфейс и приложение будет более энергоэффективным.
Посмотрите повнимательнее логику создания таймера и метод, который который он вызывает при срабатывании, все станет ясно.
0
таймер в данной статье порождает retain-цикл, т.к. таймер имеет сильную ссылку на target
0
Спасибо за перевод!
Небольшое уточнение:
Насколько мне известно runloop будет создан у потока, только после вызова currentRunLoop (класса Runloop) на этом потоке. Если не сделать этого и не вызвать run() у currentRunLoop то таймер на этом потоке работать не будет.
Кусочек оригинального текста проскочил:
Небольшое уточнение:
у каждого потока ест автоматически созданный для него цикл выполнения
Насколько мне известно runloop будет создан у потока, только после вызова currentRunLoop (класса Runloop) на этом потоке. Если не сделать этого и не вызвать run() у currentRunLoop то таймер на этом потоке работать не будет.
Кусочек оригинального текста проскочил:
updateAnimation() is now called every time the animation timer fires.
чтобы мы могла правильно
+1
Спасибо, огрехи поправил! Что касается RunLoop, то пример, рассматриваемый в оригинальной публикации, вполне рабочий, я его повторил, конечно.
0
Подскажите плиз, какой самый не костыльный способ в Swift'е для работы с таймером по типу pause/resume?
0
Вот ещё полезно A Background Repeating Timer in Swift. Таймер на базе DispatchSourceTimer.
+1
Sign up to leave a comment.
Таймер в iOS