В моем приложении установлены два таймера, которые повторяются каждые несколько секунд.
Все работает отлично, кроме случаев, когда пришло время аннулировать таймеры.
Когда телефон заблокирован, я хочу сделать эти таймеры недействительными, а затем восстановить их, когда телефон разблокирован.
Я использую уведомления, чтобы понять, когда сделать недействительными / создать таймеры.
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(notify_didBecomeActive:) name:UIApplicationDidBecomeActiveNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(notify_willResigneActive:) name:UIApplicationWillResignActiveNotification object:nil];
Вот что содержит метод notify_didBecomeActive:
clockTicker = [[NSTimer scheduledTimerWithTimeInterval: 1
target: self
selector: @selector(showActivity)
userInfo: nil
repeats: YES] retain];
alarmTicker = [[NSTimer scheduledTimerWithTimeInterval: CONST_ALARMTIMER
target: self
selector: @selector(checkAndLaunchAlarm)
userInfo: nil
repeats: YES] retain];
Этот метод notify_willResigneActive содержит:
if (alarmTicker) {
[alarmTicker invalidate];
[alarmTicker release];
alarmTicker = NULL;
}
if (clockTicker) {
[clockTicker invalidate];
[clockTicker release];
clockTicker = NULL;
}
Проблема в том, что когда я отлаживаю это во втором недействительном таймере, я получаю ошибку.
Странная вещь заключается в том, что если я переключаю порядки таймеров (например, сначала аннулируем ClockTicker) .. Я все еще получаю ошибку во втором таймере.
Что я мог делать не так?
Спасибо,
Леонардо