如何查找NSTimer是否有效?

Rah*_*yas 29 xcode objective-c nstimer invalidation iphone-sdk-3.0

我有这样的事情:

 NSTimer* timer = [NSTimer scheduledTimerWithTimeInterval:1.0
                                                   target:self
                                                 selector:@selector(updateCountdown)
                                                 userInfo:nil
                                                  repeats:YES]; 
Run Code Online (Sandbox Code Playgroud)

我正在使用此计时器更新标签的文本.在某种情况下我不想检查定时器是否处于活动状态,然后使定时器无效.我的问题是我怎么发现计时器是否有效?

Kev*_*vin 69

当一个非重复计时器触发时,它会将其标记为无效,因此您可以在取消它之前检查它是否仍然有效(当然还可以自行解决它).

if ( [timer isValid] && yourOtherCondition){
    [timer invalidate], timer=nil;
}
Run Code Online (Sandbox Code Playgroud)

在您的情况下,您有一个重复计时器,因此它将始终有效,直到您采取某些操作使其无效.看起来在这种情况下你正在进行倒计时,所以当你倒计时到达所需的值时,你可以确保自己失效并摆脱它(在你的updateCountdown方法中)


NSR*_*der 8

NSTimer有一个-isValid方法.


ian*_*anh 5

将计时器保存在实例变量中,并timer = nil在没有计时器运行时(即在您调用之后[timer invalidate])进行设置.然后,要检查计时器是否处于活动状态,您可以检查是否timer == nil.