0

我正在制作游戏,在玩家获胜后,我将另一个视图控制器设置为根视图控制器。

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

但是NSTimer在那个视图控制器上制作的东西一直在工作,当我再次运行那个视图控制器时,它工作起来很奇怪而且有问题。当我将另一个视图控制器设置为根视图控制器时,有什么方法可以完全释放该视图控制器?抱歉,这可能是一个简单的问题,对 Objective-c 来说有点新

4

1 回答 1

1

这取决于您想要什么,如果您不再使用该视图控制器,则释放它是安全的,即使您释放了 NSTimer 将继续运行的控制器,除非您向它发送 [myNSTimer invalidate] 消息然后释放它使用 [myNSTimer release],(请注意,如果您的计时器被保留,您只需要释放)......在您的 ViewController 的 dealloc 方法中。

如果您使用 ARC,您只需要:

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

同样,这只是在您不再使用该 ViewController 并希望释放它的情况下。如果您不想释放它,您可以在设置新的 rootViewController 之前简单地执行此操作(我认为您不应该这样做,因为使用导航控制器或模式视图会更好):

[myNSTimer invalidate];

这将停止 NSTimer。

于 2012-07-20T20:20:43.747 回答