iphone - 如何使用 GCD 在主线程上延迟后安全地分派(dispatch)代码?

标签 iphone ios objective-c ipad grand-central-dispatch

如果您已经在主线程上,那么在主线程上延迟分派(dispatch)代码块是否安全?

dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, seconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), theBlock);

或者有更安全的方法吗?执行此操作时,如果我已经在主队列(主线程)上,是否需要执行任何检查?

最佳答案

如果 block 是异步入队的,您通常不必检查是否已经在主线程上,which dispatch_after does :

This function waits until the specified time and then asynchronously adds block to the specified queue.

但是,您必须检查是否使用像 dispatch_sync 这样的同步函数。否则会导致僵局。

关于iphone - 如何使用 GCD 在主线程上延迟后安全地分派(dispatch)代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17363288/

相关文章:

ios - 如何在arm64 ios程序集中调用malloc

ios - 如何从设置 Pane 分配激活器操作

ios - 将 xcode 项目 4.2 迁移到 xcode 7.0

objective-c - 在 iOS 中实现 HTTP post/Get 的正确方法

iphone - 在tableview中排序数组

ios - 使用 XAMARIN 在 IOS 8 中获取 GPS 位置

ios - MFMailComposeViewController 的 UINavigationBar 不一致地显示正确的图像/颜色

ios - Xcode 9 Swift 4 标签页

ios - Flutter 不更新 subwidget

iphone - 在表格左侧垂直移动表格部分