2012-06-22 3 views
7

私は私のアプリでNSRunLoopがタイマーに接続されています:アプリがバックグラウンドになるとアプリがバックグラウンドになって復帰すると、NSRunLoopとタイマーはどうなりますか?

NSTimer *updateTimer = [NSTimer scheduledTimerWithTimeInterval:300 target:self selector:@selector(onUpdateTimer) userInfo:nil repeats:YES]; 
[[NSRunLoop mainRunLoop] addTimer:updateTimer forMode:NSRunLoopCommonModes]; 

、何がこの実行ループになりますか?消えますか?つまり、それをapplicationDidBecomeActive:に再作成する必要がありますか?

答えて

8

あなたのアプリが一時停止したときにタイマーを停止し、-applicationDidBecomeActive:で再起動する必要があります。 Responding to Interruptionsの「割り込みが発生した場合の対処方法」を参照してください。実行ループについて心配する必要はありませんが、OSはその部分を処理します。

+0

いいえ、私は手動でランループを停止する必要はありません。 applicationDidBecomeActiveに同じコードを作成する必要がありますか? – DGund

+1

いいえ試してください。あなたの実行ループはうまくいくはずです。 – Caleb

+0

停止中の呼び出しとapplicationDidBecomeActiveへの呼び出しは、必ずしも1つにまとめられているわけではありません。したがって、何も情報を持たずにapplicationDidBecomeActiveに無駄なくキューイングしないでください。 – Gruntcakes

関連する問題