我试图搜索这个问题,但在这个问题上有些困惑。所有关于界面UI的指南都说,所有UI相关的操作都应该在GCD主线程上执行,但没有人提及IBAction的内部实现。
那么,IBAction是在GCD主线程上触发的还是不是呢?
我试图搜索这个问题,但在这个问题上有些困惑。所有关于界面UI的指南都说,所有UI相关的操作都应该在GCD主线程上执行,但没有人提及IBAction的内部实现。
那么,IBAction是在GCD主线程上触发的还是不是呢?
可以使用NSLog(@"is main thread? %d", [NSThread isMainThread]);
来测试,你也可以使用调试器和左侧窗格来了解哪个线程在执行你的代码。
@IBAction
。这是根据苹果的文档得出的结论:
注意:您的代码完全可以在后台线程上调用重要提示:除非另有说明,请仅从应用程序的主线程或主分派队列使用UIKit类。此限制特别适用于从UIResponder派生或以任何方式操纵您的应用程序用户界面的类。
@IBAction
方法。这就是我进行这种区分的原因。
注意:如果您因为IBOutlet错误而来到这里,请将您的IBOutlets设置为强引用(不是弱引用),以避免在某些情况下访问空IBOutlets。