我尝试在iOS13 Beta上测试应用。当我在欢迎屏幕上点击按钮以选择另一个屏幕时,应用程序冻结,然后终止。当我在Xcode 11中调试时,在控制台日志中看到以下警告行
[framework] CoreUI: RunTimeThemeRefForBundleIdentifierAndName() couldn't find Assets.car in bundle with identifier: '(null)'
[framework] CoreUI: RunTimeThemeRefForBundleIdentifierAndName() couldn't find Assets.car in bundle with identifier: '(null)'
,然后几秒钟后,应用程序终止并显示日志条目:
Message from debugger: Terminated due to memory issue
在iOS 12上没有这样的问题。我用几个资产文件创建了简单的测试应用程序,并在单击按钮时进行筛选工作正常。我也将目标版本更改为iOS 13,更改了包标识符,进行了清理和重建-但问题并没有消失
答案 0 :(得分:3)
我发现问题与
无关"CoreUI: RunTimeThemeRefForBundleIdentifierAndName() couldn't find Assets.car in bundle with identifier: '(null)'"
在目标屏幕上使用了自定义UILabel。应用程序冻结和内存问题的根本原因是方法之间的折返循环
override var text: String? {
didSet {
guard let text = text else { return }
let textRange = NSMakeRange(0, text.count)
// Kern attribute needed to do letter spacing over text
let attributedText = NSMutableAttributedString(string: text)
attributedText.addAttribute(NSAttributedStringKey.kern , value: 2.0, range: textRange)
// Add other attributes if needed
self.attributedText = attributedText
}
}
和
override public func layoutSubviews() {
super.layoutSubviews()
if let text = self.text {
self.text = text.uppercased()
}
}
attributedText
字段更改后,可能是新版SDK会调用layoutSubviews()
答案 1 :(得分:-1)
要解决此问题,只需定位到目标的构建阶段,然后删除Assets.xcasset并重新添加即可。