我在我的应用程序中设置了两个计时器,这两个计时器每隔几秒钟重复一次。除了要使计时器失效之外,一切都运行得很好。当手机被锁定时,我想要使这些计时器无效,然后在手机解锁时重新创建它们。
我正在使用通知来实现何时使计时器无效/创建计时器。
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(notify_didBecomeActive:) name:UIApplicationDidBecomeActiveNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(notify_willResigneActive:) name:UIApplicationWillResignActiveNotification object:nil];这是notify_didBecomeActive方法包含的内容:
clockTicker = [[NSTimer scheduledTimerWithTimeInterval: 1
target: self
selector: @selector(showActivity)
userInfo: nil
repeats: YES] retain];
alarmTicker = [[NSTimer scheduledTimerWithTimeInterval: CONST_ALARMTIMER
target: self
selector: @selector(checkAndLaunchAlarm)
userInfo: nil
repeats: YES] retain];notify_willResigneActive方法包含以下内容:
if (alarmTicker) {
[alarmTicker invalidate];
[alarmTicker release];
alarmTicker = NULL;
}
if (clockTicker) {
[clockTicker invalidate];
[clockTicker release];
clockTicker = NULL;
}问题是,当我在第二个计时器无效时调试它时,我得到了错误。奇怪的是,如果我改变计时器的顺序(比如首先使clockTicker无效)..我在第二个计时器上仍然有错误。
我能做错什么呢?
谢谢,莱昂纳多
发布于 2009-09-18 18:38:52
失效会释放计时器,失效后不需要释放,这就是它崩溃的原因。但我只是注意到你保留了timer...im,也不确定这是不是必要的。
https://stackoverflow.com/questions/1446156
复制相似问题