Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

iPhone app crash: UIKit

Update 29th October 2015: Might have possibly found the cause of this. I'm creating a gradient layer according to this StackOverflow post - it works perfectly fine for me and everyone else I've tested with, but might other people have problems with it?

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];

Update 27th October 2015: Still seeing these crashes coming in from Crashlytics.


Update 26th October 2015: I found this thread on StackOverflow which seems to be exactly the same issue as I am having (but with no answers..), however they are using Facebook/Twitter action sheets which I am not. Just something to help diagnose the issue.


Have just released an app to the App Store and we are seeing a small percentage of users (~2%) with this crash in Crashlytics:

It appears that it's only appearing with iOS 9, but it's happening across all devices.

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

Personally I am running an iPhone 6 with 9.1 and am not experiencing the issue. I have also tried in Simulators and again no issues, so I am not sure of how this bug is actually cropping up. The stack trace from Crashlytics is below.

It seems as though a UIColor is being added to a NSDictionary without being encoded, but I'm not doing that anywhere in the app. It also seems as though it might have something to do with UIRemoteViewController, but I'm not using that in the app (unless logging in with Facebook causes that - I have tried logging in with Facebook on the phone and simulators, but again I cannot get this error to appear).

Does anyone have any idea of what might be causing this?


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

Update with code examples

This is called in the application: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];
like image 831
cjhill Avatar asked Oct 26 '15 09:10

cjhill


1 Answers

as per my readings this is the error with UIApperence or [UIColor colorWithPatternImage:] in ios 6

so check with that in your code. if you have that code in your app then use the solid color.

here are few of the links from which i came up to this conclusion:

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

like image 163
Nik Avatar answered Oct 05 '22 00:10

Nik