dispatch_after(...,dispatch_get_main_queue(),阻塞未在主线程上运行

时间:2015-09-04 18:30:11

标签: ios cocoa-touch grand-central-dispatch

在iOS 8.4.1 Cocoa Touch应用程序中,我有这样的代码:

dispatch_after(dispatch_time(...),dispatch_get_main_queue(),block);

我惊讶地发现'阻止'正在主线程以外的线程上运行。我之前的理解是在这个上下文中使用dispatch_get_main_queue()保证了块将在主线程上运行。 Apple文档指出,对于主队列,"任务在应用程序的主线程上串行执行,因此我不了解这种行为与文档的一致性。有人可以解释这种行为,或者指出一些文件吗?谢谢。

1 个答案:

答案 0 :(得分:0)

Duh,没关系,毕竟它在主线上。我在另一个线程上查看一些记录的堆栈帧时被骗了。