只要按下按钮,我就有一个运行NSTimer的应用程序。但是,如果用户退出应用程序(多任务),计时器将继续运行。我如何使其无效以便时间停止并在退出应用程序时设置为nil。我可以禁用多任务吗?谢谢。 P.S如果它涉及使用AppDelegate,我如何在AppDelegate中引用NSTimer,因为它是在ViewController.h中创建的 我厌倦了使用:
#import "Some AppNameViewController.h"
无论如何,提前谢谢!
答案 0 :(得分:7)
您可以通过在plist中将UIApplicationExitsOnSuspend
设置为YES来停用多任务。
更优雅的解决方案是使用计时器监听班级中的UIApplicationWillResignActiveNotification
或UIApplicationDidEnterBackgroundNotification
。当这些通知中的任何一个发布invalidate
和nil
您的计时器时。
答案 1 :(得分:2)
您可以使用NSNotificationCenter,只需将计时器添加为应用程序退出时发送的消息的观察者。例如:
在viewController中:
-(void)viewDidLoad{
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self.myTimer selector:@selector(invalidate) name:@"killTheTimer" object:nil];
}
在代表中:
- (void)applicationWillResignActive:(UIApplication *)application{
[[NSNotificationCenter defaultCenter] postNotificationName:@"killTheTimer" object:nil];
}