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

Nem*_*hea 7 xcode ios swift

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

bsh*_*ley 11

[超级初始化]

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

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

这个实现在UIViewController…的子类中

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

    self.isPdfView = YES;

    return self;
}
Run Code Online (Sandbox Code Playgroud)

已更新为…

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

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


小智 3

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

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

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