0

私はゲームを作成しており、プレイヤーが勝った後、別のビュー コントローラーをルート ビュー コントローラーとして設定しています。

finishViewController*fvc=[[finishViewController alloc] initFor:0];
        [UIApplication sharedApplication].delegate.window.rootViewController=fvc;

しかしNSTimer、そのView Controllerで作成されたものは動作し続け、そのView Controllerを再度実行すると、奇妙で​​バグが発生します。別のビューコントローラーをルートビューコントローラーとして設定しているときに、そのビューコントローラーのロックを完全に解除する方法はありますか? これは簡単な質問かもしれません。申し訳ありませんが、Objective-c の初心者です。

4

1 に答える 1

1

必要なものによって異なります。そのViewControllerを使用しない場合は、割り当てを解除しても安全です。そのコントローラーの割り当てを解除しても、[myNSTimer invalidate]メッセージを送信してから割り当てを解除しない限り、NSTimerは実行を継続します。 [myNSTimerリリース]を使用して(タイマーが保持されている場合にのみリリースする必要があることに注意してください)...ViewControllerのdeallocメソッドでそれに。

ARCを使用している場合、必要なのは次のとおりです。

- (void)dealloc {
   [myNSTimer invalidate];
}

繰り返しますが、これは、そのViewControllerを再度使用せず、リリースしたい場合にのみ発生します。リリースしたくない場合は、新しいrootViewControllerを設定する前にこれを行うことができます(ナビゲーションコントローラーまたはモーダルビューを使用する方が良いとは思わない):

[myNSTimer invalidate];

これにより、NSTimerが停止します。

于 2012-07-20T20:20:43.747 に答える