-[UICGColor encodeWithCoder:], /SourceCache/UIKit/UIKit-3318/UIColor.m 中的断言失败
Posted
技术标签:
【中文标题】-[UICGColor encodeWithCoder:], /SourceCache/UIKit/UIKit-3318/UIColor.m 中的断言失败【英文标题】:Assertion failure in -[UICGColor encodeWithCoder:], /SourceCache/UIKit/UIKit-3318/UIColor.m 【发布时间】:2015-01-30 10:44:31 【问题描述】:- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
// Override point for customization after application launch.
UIColor *navBarColor =
[UIColor colorWithPatternImage:[UIImage imageNamed:@"SandPattern.jpg"]];
if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_ios_6_1
[[UINavigationBar appearance] setTintColor:navBarColor];
else
[[UINavigationBar appearance] setBarTintColor:navBarColor];
// various functions....
return YES;
应用崩溃并抛出以下错误。
*** -[UICGColor encodeWithCoder:], /SourceCache/UIKit/UIKit-3318/UIColor.m:1448
中的断言失败
*** -[UICGColor encodeWithCoder:], /SourceCache/UIKit/UIKit-3318/UIColor.m:1448
中的断言失败
libc++abi.dylib
: terminate_handler 意外抛出异常
【问题讨论】:
【参考方案1】:我移动了代码以将导航栏更新为一个函数,并在 AppDelegate.m 中的其他函数之后调用它,它工作正常。仍在寻找崩溃背后的确切逻辑。
-(void)updateUI
UIColor *navBarColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"SandPattern.jpg"]];
// [UIColor colorWithRed:129/255.0 green:200/255.0 blue:244/255.0 alpha:1.0];
if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1)
[[UINavigationBar appearance] setTintColor:navBarColor ];
else
[[UINavigationBar appearance] setBarTintColor: navBarColor];
这样的最终代码
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
// Override point for customization after application launch.
// various functions....
[self updateUI];
return YES;
【讨论】:
以上是关于-[UICGColor encodeWithCoder:], /SourceCache/UIKit/UIKit-3318/UIColor.m 中的断言失败的主要内容,如果未能解决你的问题,请参考以下文章
如何 initwithCoder 和 encodewithCoder 获取指针的值
方法 Swizzle encodeWithCoder/initWithCoder
符合 Codable 协议的类因 encodeWithCoder 失败:无法识别的选择器发送到实例
当视图包含带有自定义图像的 UIButton 时,UIViewController encodeWithCoder 失败
Swift 3 Xcode 8 - SwiftValue encodeWithCoder - 发送到实例的无法识别的选择器