故事板InstantiateWithIdentifier导致iOS 13崩溃

Sye*_*bas 5 storyboard uiviewcontroller ios13 xcode11

测试我的应用程序的Xcode 11(测试版)用于iOS的-13(测试版)的更新,我就当我试图从故事板实例的viewController越来越崩溃。

在以前的版本中,可以使用以下代码正常工作:

XYZController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"IDENTIFIER"];
Run Code Online (Sandbox Code Playgroud)

现在,对于iOS 13,Apple引入了新方法,即

XYZController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"IDENTIFIER" creator:^__Kindof UIViewController *__Nullable(NSCoder *_Nonnull coder){
    return [XYZController alloc] initWithCoder:coder];
}];
Run Code Online (Sandbox Code Playgroud)

在iOS-13中执行这两种方法都会导致崩溃。当崩溃显示在其他地方时。

这是我的崩溃报告。

由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:''从-traitCollection返回nil,这是不允许的。

M Z*_*had 3

注:临时解决方案

我也遇到过这个问题,我找到了两个临时修复方法。首先是创建需要实例化的控制器的对象/属性并instantiateViewControllerWithIdentifier在控制器的viewDidLoad. 应用程序不会崩溃。

其次是在 中实例化控制器dispatch_async(dispatch_get_main_queue())。这两个技巧都对我有用。