ios - Objective-C dispatch_after 有时会早于指定时间执行

标签 ios objective-c xcode queue grand-central-dispatch

我有一些 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/

相关文章:

ios - 响应者链但不是委托(delegate)属性将值从容器传递回 View Controller

ios - 使用 objective-c 检查 iOS 更新是否可用?

ios - iOS7 中的 ModalView 崩溃

ios - Firebase 和通用链接冲突

ios - 无法从此设备 XCode 4.6.3 复制符号

ios - Swift 无法将类型的值转换为 Realm 中的预期参数

ios - UILabel 的 NSTextAlignmentCenter 不起作用

ios - 当 View 具有嵌套的 Tabbar Controller 时,如何将右栏按钮添加到 UINavigationController?

iphone - 我自己的目录的位置

iPhone 构建问题 : MapKit/MKPolyline. h:没有这样的文件或目录