その通りです。必要な唯一のメソッドdidEnterBackground
は、appDelegate のメソッドです。
通知センターを使用すると、多くの問題が発生する可能性があります (アプリがバックグラウンドに入るたびに、クラスでタイマーが起動することを 100% 確信していますか?)。この場合、通知センターは簡単にクラッシュを引き起こす可能性があります。
これが私がすることです:
- 1 つのクラスでタイマーを設定します (名前を付けましょう
TimerManager
)
- クラスをシングルトン クラスにします。
- では
TimerManager
、タイマーを使用して配列/セットを作成します。
- 最初の ViewControllers がロードされた直後 (または AppDelegate 内) にシングルトン クラスを呼び出します。基本的に、アプリが起動した直後。
Timers
必要なときにセット/配列に追加します。
- メソッドを作成する
stopAllTimers
\
-(void)stopAllTimers {
for(NSTimer *timer in self.allTimers) {
[timer invalidate];
}
}
- my でこのメソッドを呼び出します
didEnterBacground
。[[TimerManager sharedInstance] stopAllTimers]
それだけで、これは完全に安全です。