我一直在努力制作一个用
Xcode 9编写的适用于iOS11 iOS9.0兼容的应用程序,它突然在iPhone 4S上因此错误而崩溃:
*** Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException',reason: 'Could not instantiate class named _UIColorAttributeTraitStorage'
同样的项目在iPhone 7上运行良好.
我改变了所有[UIColor colorNamed:],因为Xcode建议:
if (@available(iOS 11.0,*)) { statusBar.backgroundColor = [UIColor colorNamed:@"MyColor"]; } else { statusBar.backgroundColor = kColorFromHex(0x509E2F); }
但错误没有发生.我也没有在Apple文档或网络上的任何地方找到任何提及UIColorAttributeTraitStorage,除了一些日语(?)post.我从这篇文章中了解到,有人可能在iOS 10.3和Xcode 9中遇到了与Color Set相同的问题.
所以似乎问题出在包含颜色集的xcassets中.这是否意味着颜色集没有向后兼容性?如果我添加一个没有办法分发我的iOS低于11.0的应用程序?
P.S.:我没有任何iOS 10设备,所以我不知道自Xcode 9公开发布以来该问题是否还有10个问题.任何人都可以尝试一下吗?
解决方法
在Xcode 9 Interface Builder中使用新的Color集时遇到了同样的问题.如果您需要支持iOS 10或更早版本,请不要在Interface Builder中使用Color set中的任何颜色.
因此,请确保不要在Interface Builder中选择iPhoneSDK上方的任何颜色.