[英]Application crashes on iOS 13 because of returned nil from -traitCollection, which is not allowed
[英]returned nil from -traitCollection, which is not allowed in Xcode 11 Beta
UITraitCollection 中的断言失败 * _Nonnull 从 -traitCollection 返回 nil,这是不允许的? 当我尝试在 ios 13 中运行 Xcode 11 beta 时它崩溃了。 我不知道出了什么问题。
我遇到了这个问题,因为我的代码库中一个未命名的以前的编码器,我经常诅咒,没有在实现UITraitEnvironment
(又名UIView
或UIViewController
)的类上调用[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.