当我的应用程序进入后台时,我正在尝试使计时器无效。当您点击启动计时器并位于TimerController.m文件中的按钮时,将调用计时器。以下是调用它的方法。
mytimer = [NSTimer timerWithTimeInterval:1 target:self selector:@selector(updateTime) userInfo:nil repeats:YES];//Timer with interval of one second
[[NSRunLoop mainRunLoop] addTimer:mytimer forMode:NSDefaultRunLoopMode];
现在,当应用程序进入后台时,我想使mytimer无效,所以我尝试了 [mytimer invalidate]; 进入 - (void)applicationDidEnterBackground :( UIApplication *)应用程序委托的应用程序方法。但这不会起作用,因为它在代表中未声明。我想通过将TimerController.h包含在委托中,这可行,但不会。
所以,我显然不知道我在这里做什么。你能帮我吗?当应用程序进入后台时,如何使得mytimer无效?
答案 0 :(得分:11)
当应用程序进入后台时,还会发布UIApplicationDidEnterBackgroundNotification
通知。您可以在控制器中订阅此通知并处理其中的转换:
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(goBackground)
name:UIApplicationDidEnterBackgroundNotification
object:nil];
// and later:
- (void) goBackground {
[timer invalidate], timer = nil;
}
答案 1 :(得分:0)
if (timer) {
[timer invalidate];
timer = nil;
}
applicationReEnteredForeground中的通知方法也可以正常工作