objective-c - 如何查找 NSTimer 是否处于事件状态?

标签 objective-c xcode iphone-sdk-3.0 nstimer invalidation

我有一个像这样的计时器:

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

我正在使用这个计时器更新标签的文本。在某种情况下,我想检查计时器是否处于事件状态然后使计时器无效。我的问题是如何确定计时器是否处于事件状态?

最佳答案

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

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

在您的情况下,您有一个重复计时器,因此它将始终有效,直到您采取一些措施使其无效。看起来在这种情况下您正在运行倒计时,因此当倒计时达到所需值时(在您的 updateCountdown 方法中),您需要确保使它无效并摆脱它

关于objective-c - 如何查找 NSTimer 是否处于事件状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1635803/

相关文章:

ios - 如果已经下载了应用程序,则如何打开它;否则,请打开iTunes下载页面

xcode - 旧版本的应用程序出现在模拟器中

iphone - 如何创建一个让用户通过手指触摸绘制 'sketch' 的屏幕?

ios - Facebook 喜欢 查看下面的导航栏

ios - 如何为我的 iOS Cocos2d 游戏保存游戏数据?

iphone - 无法读取未知加载命令0x80000022

objective-c - 如何在 NSNotificationCenter 中使用参数化方法?

ios - AVAudioSession AVAudioSessionCategoryPlayAndRecord 故障

ios - 无法将 socket 连接到通用类

ios - iOS 10 上的 ScrollView "bug",swift 4