2010-08-19 1 views
3

У меня есть приложение на основе табуляции с тремя вкладками, один из которых - это работающие часы. Чтобы анимировать пользовательский интерфейс часов, я использую NSTimer, который срабатывает один раз в секунду. Если пользователь будет переключаться и выходить из разных вкладок, как мне управлять этим таймером?Как я могу управлять своим NSTimer в приложении iPhone на вкладке?

  1. Могу ли я использовать scheduledTimerWithTimeInterval, чтобы создать и запланировать таймер при первом запуске приложения и позволить ему умереть при закрытии приложения? Или я должен поддерживать переменную экземпляра для таймера в контроллере rootview для вкладки часов и использовать addTimer:forMode: и invalidate?
  2. Если лестница, как часто я должен добавлять и отменять таймер? В моих методах viewWillAppear и viewWillDisappear для контроллера rootview вкладки часов? Где-нибудь еще?

Большое спасибо за вашу мудрость!

ответ

1

Я хотел бы сделать следующее:

если появится ваш Clock-View -> установить часы на текущее время, а затем запустить таймер, который обновляет часы каждую секунду:

clockRefreshTimer = [NSTimer scheduledTimerWithTimeInterval: 1 target: self selector:@selector(updateClockView) userInfo:nil repeats:YES] 

если часовой вид вот-вот исчезнет недействительным таймер

[clockRefreshTimer invalidate]; 

Таким образом, вы не делаете ненужных обновлений.

надежды я мог бы помочь,
сэм

2

Что @samsam сказал, плюс это: набор таймер на 1 секунду НЕ гарантируется стрелять точно на втором. Он будет запланирован для следующего доступного времени обработки через секунду. Во многих случаях это будет довольно близко к точному времени, когда это запланировано, но редко это будет именно тогда, и это может быть совсем немного, если приложение занято другими вещами.

Если действительно важно, чтобы ваши часы фактически отмечались один раз в секунду (и это было бы не так много часов, если бы это не так), вы хотите, чтобы ваш таймер срабатывал чаще, чем это, и обновляйте интерфейс, когда он замечает, что значение времени, которое он наблюдал, изменилось.

+0

yep, вы, конечно, совершенно правы на этом. спасибо – samsam

Смежные вопросы