ios – iPhone应用程序崩溃:UIKit

2015年10月29日更新:可能找到了原因.我正在根据 this StackOverflow post创建一个渐变层 – 它对我和我测试过的所有其他人来说都非常好,但是其他人可能会遇到问题吗?
CAGradientLayer * g  = [CAGradientLayer layer];
UIColor * colourFrom = [UIColor colorWithRed:0.1 green:0.7 blue:0.3  alpha:1.0];
UIColor * colourTo   = [UIColor colorWithRed:0.1 green:0.8 blue:0.4 alpha:1.0];

g.frame        = self.view.bounds;
g.cornerRadius = 10;
g.startPoint   = CGPointMake(0.0,0.5);
g.endPoint     = CGPointMake(1.0,0.5);
g.colors       = [NSArray arrayWithObjects:(id)[colourFrom CGColor],(id)[colourTo CGColor],nil];

2015年10月27日更新:仍然看到来自Crashlytics的这些崩溃.

2015年10月26日更新:我发现this thread on StackOverflow似乎与我所拥有的问题完全相同(但没有答案……),但他们使用的是Facebook / Twitter活动表,我不是.只是帮助诊断问题的东西.

刚刚向App Store发布了一个应用程序,我们看到Crashlytics中发生这种崩溃的用户比例很小(约2%):

它似乎只出现在iOS 9中,但它正在所有设备上发生.

Fatal Exception: NSInternalInconsistencyException Only RGBA or White color spaces are supported in this situation.

就个人而言,我正在运行带有9.1的iPhone 6,但我没有遇到这个问题.我也尝试过模拟器,但没有问题,所以我不确定这个bug是如何实际出现的.来自Crashlytics的堆栈跟踪如下.

好像UIColor正在被添加到NSDictionary而没有被编码,但我不会在应用程序中的任何地方这样做.它似乎也可能与UIRemoteViewController有关,但我没有在应用程序中使用它(除非使用Facebook登录导致 – 我尝试使用Facebook登录手机和模拟器,但我再也不能出现此错误).

有没有人知道可能导致这种情况的原因?

Thread : Fatal Exception: NSInternalInconsistencyException
0  CoreFoundation                 6512725832 __exceptionPreprocess
1  libobjc.A.dylib                6869942144 objc_exception_throw
2  CoreFoundation                 6512725528 +[NSException raise:format:]
3  Foundation                     6528403996 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:]
4  UIKit                          6606881444 -[UIColor encodeWithCoder:]
5  Foundation                     6528169072 _encodeObject
6  Foundation                     6528197336 +[NSKeyedArchiver archivedDataWithRootObject:]
7  UIKit                          6609904352 -[_UIAppearanceRecorder _recordInvocation:withClassName:containerClassNames:traitCollection:selectorString:forRemoteProcess:]
8  UIKit                          6609884356 __54+[_UIAppearance _recordersExcludingSource:withWindow:]_block_invoke
9  CoreFoundation                 6511594744 __65-[__NSDictionaryM enumerateKeysAndobjectsWithOptions:usingBlock:]_block_invoke
10 CoreFoundation                 6511594448 -[__NSDictionaryM enumerateKeysAndobjectsWithOptions:usingBlock:]
11 UIKit                          6609883592 +[_UIAppearance _recordersExcludingSource:withWindow:]
12 UIKit                          6611900724 UIViewServiceCurrentAppearanceSerializedRepresentations
13 UIKit                          6610654700 +[_UIRemoteViewController _requestViewController:traitCollection:fromServiceWithBundleIdentifier:service:connectionHandler:]
14 UIKit                          6610654160 +[_UIRemoteViewController requestViewControllerWithService:connectionHandler:]
15 UIKit                          6609355772 __117-[NSExtension(UIViewControllerAdditions) instantiateViewControllerWithInputItems:listenerEndpoint:connectionHandler:]_block_invoke_2
16 libdispatch.dylib              6878402280 _dispatch_call_block_and_release
17 libdispatch.dylib              6878402216 _dispatch_client_callout
18 libdispatch.dylib              6878424496 _dispatch_main_queue_callback_4CF
19 CoreFoundation                 6512427512 __CFRUNLOOP_IS_SERVICING_THE_MAIN_disPATCH_QUEUE__
20 CoreFoundation                 6512418912 __CFRunLoopRun
21 CoreFoundation                 6511561888 CFRunLoopRunSpecific
22 GraphicsServices               6701891720 GSEventRunModal
23 UIKit                          6602887164 UIApplicationMain
24 MyApp                          4296179280 main (main.m:16)
25 libdyld.dylib                  6878603448 start

使用代码示例更新

这在应用程序中调用:didFinishLaunchingWithOptions:

// Make the app look pretty
// Turn the status bar color white
[[UIApplication sharedApplication] setStatusBarHidden:NO];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
// Nav bar: Background colour
[[UINavigationBar appearance] setBarTintColor:[UIColor colorWithRed:0.5 green:0.5 blue:0.5 alpha:1.0]];
// Nav bar: White text
[[UINavigationBar appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor colorWithRed:0.2 green:0.2 blue:0.2 alpha:1.0],NSForegroundColorAttributeName,nil]];
// Nav bar: Tint colour
[UINavigationBar appearance].tintColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"TintNavBar"]];
// Tab Bar: Background color
[[UITabBar appearance] setBarTintColor:[UIColor colorWithRed:0.5 green:0.5 blue:0.5 alpha:1.0]];
// Tab bar: Tint colour
[UITabBar appearance].tintColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"gradientSmall"]];
// UIControlSegment: Change the colours to just white
// @url https://stackoverflow.com/a/21484829/4027036
[[UISegmentedControl appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName:[Ui getColour:UI_BODY_PRIMARY]}
                                               forState:UIControlStatenormal];

解决方法

根据我的读数,这是UIApperence或ios 6中的[UIColor colorWithPatternImage:]的错误

所以在你的代码中检查一下.如果您的应用程序中有该代码,则使用纯色.

这里是我得出这个结论的几个链接

1)IOS erro at Posting to Facebook with the native Share dialog – UICGColor encodeWithCoder

2)UIApperance and various crashes

3)UIApperance and various crashes

4)iOS 6 MFMailComposeViewController: Only support RGBA or the White color space,this method is a hack

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...