我有一个可能来自任何线程的回调。当我得到这个回调时,我想在主线程上执行某个任务。
我是否需要检查我是否已经在主线程上 - 或者在调用下面的代码之前不执行此检查是否会受到任何惩罚?
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 :
objective-c - 在 Storyboard中,如何制作用于多个 Controller 的自