Objective-C - 当切换到另一个视图时,NSTimer仍然有效

时间:2011-08-15 22:54:19

标签: objective-c cocoa-touch nstimer switching

我在第一个视图控制器上运行了一个计时器,然后我想切换到另一个视图控制器,计时器仍然在后台运行。

如何整体清理第一个视图控制器并启动第二个视图控制器。

SecondViewController *newView = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
[self presentModalViewController:newView animated:NO];
[newView release];

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

这取决于您对视图的处理方式。如果您正在使用UITabBarControllerUINavigationController,则在启动第二个视图控制器时,您可能不希望“清理”第一个视图控制器。您希望控制器处理它。因此,如果您正在使用这些控制器中的任何一个,我建议在第一个视图使用UIViewController的viewWillDisappear:方法退出视图时暂停计时器。

答案 1 :(得分:0)

我怀疑问题是你的第一个视图在内存中仍然存活(保留),因为你刚刚将第二个视图呈现为模态视图。第二种观点可以被驳回,因为父母仍然被保留。

您需要做的是将计时器移动到您的app委托或单身类。然后给自己一些方法来随意启动/停止/暂停它。

或者,您可以在第二个视图的 viewDidLoad 调用中暂停或停止计时器,然后在 viewDidUnload 上恢复或重新启动它。

您可以使用第二个视图控制器的 parentViewController 属性来获取父视图。