2011-08-15 24 views
1

ボタンが押されている間はNSTimerを実行しているアプリケーションがあります。ただし、ユーザーがアプリを終了すると(マルチタスク)、タイマーは継続します。どのように私は時間が停止するように無効にすることができますし、アプリケーションが終了しているときにnilに設定されます。マルチタスクを無効にすることはできますか?ありがとう。 P.S私が疲れて使用しているViewController.h で作成されたので、私は、NSTimerはAppDelegateで参照することを得るのですかAppDelegateの使用を伴う場合:ユーザーが終了するとNSTimerを無効にして無効にします。

#import "Some AppNameViewController.h" 

をとにかく、事前に感謝を!

答えて

7
  • あなたのPLISTにYESにUIApplicationExitsOnSuspendを設定することで、マルチタスキングを無効にすることができます。

  • より洗練された解決策は、タイマー付きクラスのUIApplicationWillResignActiveNotificationまたはUIApplicationDidEnterBackgroundNotificationを聞くことです。これらの通知のいずれかがタイマーinvalidatenilと表示された場合。

2

NSNotificationCenterを使用して、アプリが終了したときに送信するメッセージのオブザーバーとしてタイマーを追加するだけで済みます。例:のViewControllerで

:デリゲートで

-(void)viewDidLoad{ 
    [super viewDidLoad]; 
    [[NSNotificationCenter defaultCenter] addObserver:self.myTimer selector:@selector(invalidate) name:@"killTheTimer" object:nil]; 
} 

- (void)applicationWillResignActive:(UIApplication *)application{ 
    [[NSNotificationCenter defaultCenter] postNotificationName:@"killTheTimer" object:nil]; 
} 
+0

涼しい!!!!!! – Kjuly

関連する問題