我有一些 Objective-C 代码需要在指定时间后触发。我一直在使用下面的代码,并且在 95% 的时间里,它工作得很好。然而,有时代码会真的提前执行。比如 5 秒而不是 60 秒。这是完全不一致的,我不能故意让它发生。知道是什么原因造成的吗?
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(60 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
//do code stuff here
});
最佳答案
我遇到了同样的问题,我的解决方案是:
dispatch_time_t delayTime = dispatch_time(DISPATCH_TIME_NOW, 2 * NSEC_PER_SEC);
dispatch_after(delayTime, dispatch_get_main_queue(), ^(void){
// YOUR CODE HERE
});
希望这对您也有用。
关于ios - Objective-C dispatch_after 有时会早于指定时间执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48552941/