2011-11-15 11 views
1

まず時間が、私はそれがバックグラウンドで起こったときにタイマーを停止するタイマーを起動すると、私は、タイマーをバックグラウンドで使用しているときに、タイマーを無効にするにはどうすればよいですか?私のアプリで

をタイマーを使用し、

は、だから私は、タイマーを停止する

- (void)applicationWillEnterForeground:(UIApplication *)application 
{ 
    FirstViewController *view = [[FirstViewController alloc]init]; 
[view.myticker invalidate]; //myticker is timer 
    view.myticker = nil; 
[view release]; 
} 
をこのコードを使用しました

は私が

、古いタイマーをViewControllerをするために来たときにフォアグラウンドのデリゲートメソッドの呼び出し、

しかし、まだ実行されているタイマーを無効にする必要があり

タイマーをバックグラウンドで使用しているときに、タイマーを無効にするにはどうすればよいですか?

+0

クイックチェック:あなたは、私はすでにそれがバックグラウンドで来たとき、タイマは私がしようとしnil.Afterではないことをチェックして、それを – TigerCoding

+0

を無効にしようとする前に、あなたのview.mytickerがあなたのapplicationWillEnterForeground方法でのNSLogチェックとnilでないことを確認してくださいタイマーをゼロにする。 –

答えて

4

あなたのタイマーをデリゲートに移動する必要はありません。実際には目的がないので、実際にはかなり悪い考えです!

あなたはあなたのビューコントローラ内からこれらを守って、タイマーを無効に...(OSのバージョン、OS4 +で後者に依存する)

UIApplicationWillResignActiveNotification UIApplicationDidEnterBackgroundNotification

を次の通知を遵守しなければなりません。アプリが再び開始したときに、対応する通知が時間を作成する一つのグローバルファイルで

UIApplicationDidBecomeActiveNotification UIApplicationWillEnterForegroundNotification

+0

お返事ありがとうございます、いくつかのサンプルまたは詳細を教えてください。 –

1

NSTimer変数をAppDelegateメソッドに宣言して合成します。次に、AppDelegateのsharedApplicationを使用して、プロジェクト全体でその変数を使用し、新しい変数を作成しないでください。また、同じインスタンス変数に対してinvalidateメソッドを実行します。

0

...があります。アプリのデリゲートメソッドで

、上記のコード

- (void)applicationDidEnterBackground:(UIApplication *)application { 

    NSTimer *t ; 
    if ([t isValid]) { 
     [t invalidate]; 
    } 

} 

使用は、アプリケーションがバックグラウンドになったときにタイマーを停止するお手伝いをするものとします。

関連する問題