我有一个可能来自任何线程的回调.当我得到这个回调时,我想在主线程上执行一个特定的任务.
我是否需要判断我是否已经在主线程上,或者在调用下面的代码之前不执行此判断是否有任何惩罚?
dispatch_async(dispatch_get_main_queue(), ^{
// do work here
});
我有一个可能来自任何线程的回调.当我得到这个回调时,我想在主线程上执行一个特定的任务.
我是否需要判断我是否已经在主线程上,或者在调用下面的代码之前不执行此判断是否有任何惩罚?
dispatch_async(dispatch_get_main_queue(), ^{
// do work here
});
不,你不需要判断你是否已经在主线程上.通过将块分配到主队列,您只需将块安排在主线程上串行执行,这在相应的运行循环运行时发生.
如果您已经在主线程上,行为是相同的:该块被调度,并在主线程的运行循环运行时执行.