2011-07-13 9 views
0

飛び出るときNSTimerを解放:私の最初のビューでは、この2番目のビューでは、このコード無効化および(UINavigationController付き)ビュー私はUINavigationControllerを使用してい

- (IBAction)gototrack:(id)sender { 
    map *map2 = [[map alloc] initWithNibName:@"map" bundle:[NSBundle mainBundle]]; 
    [self.navigationController pushViewController:map2 animated:YES]; 
    [map2 release]; 
} 

を使用して別のビューをプッシュUIButtonありオブジェクトの位置を示すマップがあります。 このオブジェクトは高速に動くので、毎秒位置を更新する必要があります。新しい座標を計算し、マップを更新するメソッドを呼び出すNSTimerでこれを行います。 すべて正常に動作しますが、NSTimerがまだ動作しているため、ユーザーがNavigationBarの通常のボタンでビューをポップすると、この2番目のビューを解放できませんでした。

ユーザーがこの2番目のビューをポップしたときにNSTimerを無効にして解除するにはどうすればよいですか? 自動的に呼び出されるメソッドはありますか? (私は何も試みませんでした)

ありがとう!

答えて

1

NSTimer-viewWillDisappearまたはviewDidDisappearに無効にすることができます。

viewWillDisappear

この方法は、そのウィンドウから削除、または別のビューによって覆われているビューに応答して呼び出されます。このメソッドは、ビューが実際に削除または覆われる前、およびアニメーションが設定される前に呼び出されます。

サブクラスはこのメソッドをオーバーライドして、変更をコミットしたり、ビューの最初のレスポンダステータスを辞退したり、その他の関連するタスクを実行することができます。たとえば、このメソッドを使用して、ビューが最初に表示されたときに、viewDidDisappear:メソッドで行われたステータスバーの方向またはスタイルの変更を元に戻すことができます。このメソッドをオーバーライドする場合は、実装のある時点でsuperを呼び出す必要があります。

詳しくはUIViewController referenceをご覧ください。

+0

確かに、簡単でした!どうもありがとう! – JAA

0

簡単ですが、これは次のようなものです。[// Your nstimer // invalidate];

+0

これは、この場合に発生する必要があるときはいつでも行います。viewDidDissapear – user842059

関連する問題