アプリケーションに2つのタイマーを設定しましたが、どちらも数秒ごとに繰り返されます。タイマーを無効にするときを除いて、すべてが正常に機能します。電話がロックされている場合、それらのタイマーを無効にして、電話のロックが解除されたときにそれらを再作成したいと思います。
通知を使用して、タイマーを無効化/作成するタイミングを認識しています。
[[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;
}
問題は、2番目のタイマーの無効化でこれをデバッグすると、エラーが発生することです。奇妙なことに、タイマーの順序を切り替えると(最初にclockTickerを無効にするなど)、2番目のタイマーでもエラーが発生します。
何が間違っているのでしょうか?
ありがとう、レオナルド