– 只能从主线程调用

这个警告导致了一个严重的问题,因为我真的不能使用Xcode 9 beta 2调用主线程之外的委托。奇怪的是,当我使用Xcode 8.3.3时,这是工作。

我还认为只从主线程调用代表只是一个好习惯,不是吗? 那么为什么这会导致应用程序崩溃呢?

就像这样从主线程调用它。

dispatch_async(dispatch_get_main_queue(), ^{ [[UIApplication delegate] fooBar]; }); 

深入到你的应用程序委托像这样,暗示你的架构可以使用一点清理。

你可以从任何你想要的线程调用代表。 你只需要确保你在UIKit调用的主线程上。 或者你在CoreData对象期望的正确线程上。 这一切都取决于你的对象的API合同。