objective-c - GCD 在主线程中执行任务

我有一个可能来自任何线程的回调。当我得到这个回调时,我想在主线程上执行某个任务。

我是否需要检查我是否已经在主线程上 - 或者在调用下面的代码之前不执行此检查是否会受到任何惩罚?

dispatch_async(dispatch_get_main_queue(), ^{
   // do work here
});

最佳答案

不,你不需要检查你是否已经在主线程上。通过将 block 分派(dispatch)到主队列,您只是将 block 安排在主线程上串行执行,这发生在相应的运行循环运行时。

如果你已经在主线程上,行为是一样的:block被调度,在主线程的run loop运行时执行。

https://stackoverflow.com/questions/5662360/

相关文章:

ios - 如果模态 ViewController 演示样式为 UIModalPresentatio

ios - @property 在 Objective-C 中保留、分配、复制、非原子性

objective-c - 如何检查 NSString 是否以某个字符开头

ios - 使用 NSURLSession 发送 POST 请求

objective-c - registerForRemoteNotificationTypes :

ios - 裁剪 UIImage

ios - 如何以毫秒为单位准确记录方法的执行时间?

objective-c - 在 Storyboard中,如何制作用于多个 Controller 的自

ios - 我可以强制 UITableView 隐藏空单元格之间的分隔符吗?

objective-c - 如何测试对象在 Objective-C 中属于哪个类?