我告诉你,我希望这是一个简单的解决方法。
我所拥有的是类型为NSTimer的IVAR * timer类。当执行IBAction时,将调用包含以下代码的方法:
if (timer) timer = nil;
timer = [NSTimer timerWithTimeInterval:0.2 target:self selector:@selector(removeOverlay) userInfo:nil repeats:NO];
在同一个类中,我有一个方法:
- (void)removeOverlay {
...
}
在0.2秒的时间间隔后不会触发。
您知道这是什么问题吗?
最佳答案
确保同时不释放timer
实例的NSTimer
实例。removeOverlay
看起来像它更新了一些UI。确保在主线程上调用它。
在removeLayout
方法中放置一个断点以查看是否触发。
您没有计划计时器。将timerWithTimeInterval
替换为scheduledTimerWithTimeInterval
要在主线程上执行代码(允许UI更新):
- (void)removeOverlay {
dispatch_async(dispatch_get_main_queue(), ^{
// update ui
});
}
有关Grand Central Dispatch (GCD)的更多信息
关于iphone - NSTimer无法按预期运行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14205809/