Mar*_*vie 9 iphone xcode objective-c ios
我一直在努力制作一个用Xcode 9编写的适用于iOS11 iOS9.0兼容的应用程序,它突然在iPhone 4S上因此错误而崩溃:
*** Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException', reason: 'Could not instantiate class named _UIColorAttributeTraitStorage'
Run Code Online (Sandbox Code Playgroud)
同样的项目在iPhone 7上运行良好.
我改变了所有[UIColor colorNamed:],因为Xcode建议:
if (@available(iOS 11.0, *)) {
statusBar.backgroundColor = [UIColor colorNamed:@"MyColor"];
} else {
statusBar.backgroundColor = kColorFromHex(0x509E2F);
}
Run Code Online (Sandbox Code Playgroud)
但错误没有发生.我也没有在Apple文档或Web上的任何地方找到任何提及UIColorAttributeTraitStorage的内容,除了一些日文(?)帖子.我在这篇文章中理解的是,有人可能在iOS 10.3和Xcode 9中遇到了与Color Set相同的问题.
所以似乎问题出在包含颜色集的xcassets中.这是否意味着颜色集没有向后兼容性?如果我添加一个没有办法分发我的iOS低于11.0的应用程序?
PS:我没有任何iOS 10设备,因此我不知道自Xcode 9公开发布以来该问题是否还有10个以上.任何人都可以尝试一下吗?
zzz*_*zel 17
在Xcode 9 Interface Builder中使用新的Color集时遇到了同样的问题.如果您需要支持iOS 10或更早版本,请不要在Interface Builder中使用Color set中的任何颜色.
因此,请确保不要iPhoneSDK在Interface Builder中选择上面的任何颜色.
TL; DR ; 您可能从"最近使用的颜色"下拉列表中选择了一种颜色,该颜色是在您当前使用的项目之外的其他项目中定义的颜色资源.确保在标记为"丢失"的笔尖或故事板中没有任何选定的颜色.
假设您在"项目1"中定义了一个颜色资源,并将其命名为"YorkGreen",如下例所示.
该颜色将显示在所有其他项目的"最近使用的颜色"下拉列表中.如果您选择它(从"项目1"以外的任何其他项目),NSInvalidUnarchiveOperationException将在加载该视图(笔尖或故事板)时抛出,您的应用程序将崩溃.
Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException',
reason: 'Could not instantiate class named _UIColorAttributeTraitStorage'
Run Code Online (Sandbox Code Playgroud)
希望这是一个错误,Xcode 9甚至可以显示来自其他项目的Color Assets,并且这将在未来的Xcode版本中修复.
| 归档时间: |
|
| 查看次数: |
2434 次 |
| 最近记录: |