如何找到,如果是的NSTimer活跃与否?(How to find if NSTimer is ac

2019-09-01 21:02发布

我有一个是这样的:

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

我更新使用此计时器标签的文本。 不是在一定的条件我要检查,如果计时器是活动的,则无效计时器。 我的问题是我怎么发现计时器是否处于活动状态?

Answer 1:

当一个非重复的计时器触发它本身标记为无效,因此您可以检查是否取消之前仍然有效(当然然后摆脱自己的话)。

if ( [timer isValid] && yourOtherCondition){
    [timer invalidate], timer=nil;
}

你的情况,你有一个重复计时器,以便它永远是有效的,直到你采取一些行动以使它无效。 貌似在这种情况下,你正在运行一个倒计时所以这将是由你来确保你无效,并摆脱它自己,当倒计时达到期望值时(在你updateCountdown法)



Answer 2:

NSTimer具有-isValid方法。



Answer 3:

请一个实例变量的定时器,并设置timer = nil时没有定时器运行(你打电话后,即[timer invalidate] )。 然后,以检查计时器是活动的,你可以检查是否timer == nil



Answer 4:

在斯威夫特,你可以使用isValid boolean值,看看是否计时器正在运行:

if timer.isValid {
   // Do stuff
}

从苹果的文档 :

一个布尔值,指示接收者是否是当前有效的。 (只读)

真要是如果计时器已经无效的接收器仍然能够烧制的或虚假的,不再能够射击。



文章来源: How to find if NSTimer is active or not?