繁体   English   中英

从 -traitCollection 返回 nil,这在 Xcode 11 Beta 中是不允许的

[英]returned nil from -traitCollection, which is not allowed in Xcode 11 Beta

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

[超级初始化]

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

如果我能在五年内向后挥舞战锤,我会的。

这个实现在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 中开始收到的崩溃。

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

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

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

只是简单地将您的代码放在 UI 更新的主线程中:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM