【问题标题】:Storyboard instantiateWithIdentifier cause crash on iOS 13Storyboard 实例化 WithIdentifier 导致 iOS 13 崩溃
【发布时间】:2019-12-10 23:45:41
【问题描述】:

Xcode 11 (beta) 中测试我的应用以获取 iOS-13 (beta) 更新,当我尝试从情节提要实例化 viewController 时出现崩溃。

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

XYZController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"IDENTIFIER"];

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

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

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

这是我的崩溃报告。

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

【问题讨论】:

  • 用一个空的(新的)视图控制器测试...你覆盖 traitCollection 方法吗?
  • 不,我没有重写任何方法
  • 空视图控制器会崩溃吗?
  • 我也遇到了同样的问题。你解决了吗?

标签: uiviewcontroller storyboard xcode11 ios13


【解决方案1】:

注意:临时解决方案

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

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

【讨论】:

    猜你喜欢
    • 2012-02-27
    • 1970-01-01
    • 1970-01-01
    • 2020-09-22
    • 1970-01-01
    • 2012-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多