首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当无效时,在Iphone上使用EXC_BAD_ACCESS时NSTimer崩溃

当无效时,在Iphone上使用EXC_BAD_ACCESS时NSTimer崩溃
EN

Stack Overflow用户
提问于 2009-09-18 18:22:55
回答 3查看 6.4K关注 0票数 3

我在我的应用程序中设置了两个计时器,这两个计时器每隔几秒钟重复一次。除了要使计时器失效之外,一切都运行得很好。当手机被锁定时,我想要使这些计时器无效,然后在手机解锁时重新创建它们。

我正在使用通知来实现何时使计时器无效/创建计时器。

代码语言:javascript
复制
    [[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方法包含的内容:

代码语言:javascript
复制
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方法包含以下内容:

代码语言:javascript
复制
if (alarmTicker) {
    [alarmTicker invalidate];
    [alarmTicker release];
    alarmTicker = NULL;
}

if (clockTicker) {
    [clockTicker invalidate];
    [clockTicker release];
    clockTicker = NULL;
}

问题是,当我在第二个计时器无效时调试它时,我得到了错误。奇怪的是,如果我改变计时器的顺序(比如首先使clockTicker无效)..我在第二个计时器上仍然有错误。

我能做错什么呢?

谢谢,莱昂纳多

EN

Stack Overflow用户

回答已采纳

发布于 2009-09-18 18:38:52

失效会释放计时器,失效后不需要释放,这就是它崩溃的原因。但我只是注意到你保留了timer...im,也不确定这是不是必要的。

票数 5
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1446156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档