我已经安装在我的申请两个定时器其中两个每隔几秒钟重复。 一切正常,除非是时间无效定时器罚款。 当手机处于锁定状态,我想那些无效计时器,然后重新创建这些当手机被解锁。

使用

IM的通知来实现时无效/创建定时器。

    [[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)..我仍然有在第二计时器的误差。

我应该怎么做了?

谢谢, 莱昂纳多

有帮助吗?

解决方案

无效释放定时器,无需无效后释放,这就是为什么它的崩溃。但我只注意到你保留定时器...林不知道,这是必要的要么。

其他提示

您只需要alarmTicker和clockTicker设为零,这些计时器火灾,这样一来当你做你检查的方法中,如果(alarmTicker),或者如果(clockTicker)他们就会有正确的值。

我不知道该怎样计时器设置为NULL做而不是将其设置为零,但我知道,如果你让一个nil对象上的电话,这是一个空操作。如果你做一个NULL对象的调用,它认为它崩溃了,虽然我还没有证实这一点。这篇文章可以帮助: NULL VS未缴的Objective-C

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top