ren*_*aku 35 multithreading cocoa-touch thread-safety uiapplication ios
这个警告导致一个严重的问题,因为我真的无法使用Xcode 9 beta 2在主线程之外调用委托.奇怪的是,当我使用Xcode 8.3.3时,这是有效的.
另外我认为只从主线程调用委托只是好习惯,不是吗?那么为什么这会导致应用程序崩溃呢?
ork*_*den 57
只需从主线程中调用它即可.
dispatch_async(dispatch_get_main_queue(), ^{
[[UIApplication delegate] fooBar];
});
Run Code Online (Sandbox Code Playgroud)
像这样与您的应用代表联系,暗示您的架构可以使用一点清理.
您可以从任何您想要的线程调用代理.你只需要确保你在UIKit调用的主线程上.或者您正在使用CoreData对象所期望的正确线程.这完全取决于您的对象具有的API合约.
All*_*len 21
在Swift中,您还可以使用DispatchQueue.main.async从主线程调用UI控制方法
DispatchQueue.main.async {
YourUIControlMethod()
}
Run Code Online (Sandbox Code Playgroud)