IBActions是否在主队列上被触发?

时间:2015-01-14 14:24:14

标签: ios user-interface grand-central-dispatch ibaction

我试图搜索出来,但有点卡在这个问题上。关于UI的所有指南都说,所有UI内容都应该在GCD主线程上,但是没有人说过IBActions的内部实现。

那么,IBActions是否会在GCD主线上发布?

2 个答案:

答案 0 :(得分:7)

是的,您可以使用NSLog(@"is main thread? %d", [NSThread isMainThread]);自行测试。您还可以使用调试器和左视图来了解代码执行的线程。

答案 1 :(得分:0)

可以安全地假设只有Apple的代码在主线程上调用@IBAction s。 Apple's documentation

  

重要:   除非另有说明,否则仅从应用程序的主线程或主调度队列中使用UIKit类。此限制特别适用于从UIResponder派生的类或涉及以任何方式操纵应用程序的用户界面的类。

注意:您的代码完全可以在后台线程上调用@IBAction的方法。这就是我做出这种区分的原因。