我有一些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
});
希望这对你也有用。