【问题标题】:returned nil from -traitCollection, which is not allowed in Xcode 11 Beta从 -traitCollection 返回 nil,这在 Xcode 11 Beta 中是不允许的
【发布时间】:2020-05-22 03:52:23
【问题描述】:

UITraitCollection 中的断言失败 * _Nonnull 从 -traitCollection 返回 nil,这是不允许的? 当我尝试在 ios 13 中运行 Xcode 11 beta 时,它崩溃了。我不知道出了什么问题。

【问题讨论】:

  • 你需要添加一些代码。根据我的收集,您可能正在尝试修改约束的值,但未创建或未连接相同的 IBOutlet。
  • 现在我通过添加一些代码 DispatchQueue.main.asyn{ //code } 在 fetch Data 之后得到了一个解决方案
  • 很高兴知道。很高兴你解决了这个问题:)
  • 我也有同样的问题。能详细回答一下吗?
  • 我尝试调试崩溃的类并将 DispatchQueue.main.asyn{ //code } 放在我怀疑的方法或代码语句上,它会一一崩溃所以问题解决了。​​

标签: ios swift xcode


【解决方案1】:

[超级初始化]

我遇到了这个问题,因为我经常诅咒我的代码库中的一位未命名的以前的编码人员没有在实现 UITraitEnvironment 的类上调用 [super init](又名 UIViewUIViewController) !

如果我能在五年后使用战锤,我会的。

这个实现在UIViewController的子类中……

- (id)initWithStartPositionPdf:(float)startPosition withScrollViewHeight:(float)scrollViewHeight {
    _startPosition = startPosition;
    _scrollViewHeight = scrollViewHeight;

    self.isPdfView = YES;

    return self;
}

已更新为……

- (instancetype)initWithStartPositionPdf:(float)startPosition withScrollViewHeight:(float)scrollViewHeight {
    self = [super initWithNibName:nil bundle:nil];
    _startPosition = startPosition;
    _scrollViewHeight = scrollViewHeight;
    _isPdfView = YES;
    return self;
}

并解决了我在 Xcode 11 / iOS 13 中开始收到的崩溃问题。

【讨论】:

  • 谢谢,这对我有帮助。还有更新别人写的应用...
  • 如果可以的话,我会投票一百万次。我花了很多时间试图弄清楚这一点。谢谢。
【解决方案2】:

这就是 iOS 13 和 Xcode 11 处理主线程检查器不一致的方式。

基本上,您是从后台线程更新 UI。只需确保在主线程中更新所有 UI。

只需将更新 UI 的代码封装在 DispatchQueue.main.async { } 中。

【讨论】:

    【解决方案3】:

    只需简单地将代码放入 UI 更新的主线程即可:

    DispatchQueue.main.async
                 {
              // Put your code here 
               }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-04
      • 2020-02-03
      • 2020-12-07
      • 2020-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多