Application that breaks all devices on Segue for iOS 9 + Xcode 7

UPDATE: I used one of my DTS for a year on this. He is currently working with an Apple Support Engineer. At his suggestion, I also created an error report for this. I am updating this thread because, hopefully, this will lead to a final solution.

Somehow I figured out a way to create an application that literally reboots the simulator and / or physical device. Hooray for me. This problem started when I upgraded to xcode 7 and started testing with iOS 9. On any device / iOS 9, this problem does not raise his ugly head.

When I run it in Xcode, the only log messages that I see are

XPC connection interrupted Terminating since there is no system app. 

I narrowed it down to a section of code calling

 [self addChildViewController:segue.destinationViewController]; 

This code is part of the "MultichildContainerViewController" created in the style of this view controller

At this moment, I just don't know where to look / do to fix this problem. If I comment on adding a childviewcontroller, everything will be fine and the application will work fine. If I DO NOT comment on this, it will restart my entire simulator.

Any ideas on where to find additional debugging information or possible fixes? I just don’t know where to look for this moment, to find more information, in turn, to seek help. Any help is appreciated, thanks.

EDIT: I don't know if this helps, but I was able to track this down in a real system.log iOS simulator. It seems you have no links to my own code base, just on a panel?

 Oct 16 17:56:29 MyComputer backboardd[43977]: -[NSNull isEqualToString:]: unrecognized selector sent to instance 0x10de1baf0 Oct 16 17:56:29 MyComputer backboardd[43977]: *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSNull isEqualToString:]: unrecognized selector sent to instance 0x10d e1baf0' *** First throw call stack: ( 0 CoreFoundation 0x000000010dbf6f65 __exceptionPreprocess + 165 1 libobjc.A.dylib 0x000000010df82deb objc_exception_throw + 48 2 CoreFoundation 0x000000010dbff58d -[NSObject(NSObject) doesNotRecognizeSelector:] + 205 3 CoreFoundation 0x000000010db4cf7a ___forwarding___ + 970 4 CoreFoundation 0x000000010db4cb28 _CF_forwarding_prep_0 + 120 5 BackBoardServices 0x000000010d020b28 -[BKSHIDEventKeyCommandDescriptor isEqual:] + 155 6 CoreFoundation 0x000000010db1630b -[__NSSetM addObject:] + 411 7 CoreFoundation 0x000000010db466a0 -[NSMutableSet unionSet:] + 736 8 BackBoardServices 0x000000010d0223a3 -[BKSHIDEventRouter addHIDEventDescriptors:] + 38 9 backboardd 0x000000010c73a881 backboardd + 186497 10 libdispatch.dylib 0x000000010e862df5 _dispatch_call_block_and_release + 12 11 libdispatch.dylib 0x000000010e87e4a7 _dispatch_client_callout + 8 12 libdispatch.dylib 0x000000010e868184 _dispatch_queue_drain + 1048 13 libdispatch.dylib 0x000000010e867b3c _dispatch_queue_invoke + 595 14 libdispatch.dylib 0x000000010e869454 _dispatch_root_queue_drain + 565 15 libdispatch.dylib 0x000000010e869218 _dispatch_worker_thread3 + 98 16 libsystem_pthread.dylib 0x000000010ebaa4f2 _pthread_wqthread + 1129 17 libsystem_pthread.dylib 0x000000010eba8375 start_wqthread + 13 ) 

EDIT: I also want to emphasize that this not only causes the application to crash, it also leads to a reboot of the WHOLE simulator. I can also run this reboot on a physical device. If this were just a case of calling isEqualToString on NSNull, should this not ONLY crash my application? Not the whole simulator?

+7
ios xcode storyboard
source share
3 answers

I think I get it! I am pretty sure that my problem is the same as yours. The same failure log and situation.

I tried to isolate the problem, so I copied my storyboard into an empty project and deleted all connections and made all the classes default (without user classes).

After some games, I decided to try linking another shared view controller to the same class of wizards and parts. It works! Therefore, I compared all the settings and literally nothing has changed. Heck.

Now what? Open the source code. Right-click the storyboard in the left pane and select "Open With External Editor." This should open the source code for the storyboard. I compared the source code of the two controllers with a separate view and found the difference.

That's where I looked

 <!--Split View Controller--> <scene sceneID="X6N-vM-fHn"> <objects> <splitViewController id="xSd-V6-k6W" customClass="SplitViewController" sceneMemberID="viewController"> <navigationItem key="navigationItem" id="yvV-sB-yKa"/> <keyCommands> <keyCommand/> </keyCommands> <connections> <segue destination="PW6-z0-erU" kind="relationship" relationship="masterViewController" id="MBC-0A-hls"/> <segue destination="xqk-PP-nzR" kind="relationship" relationship="detailViewController" id="sMq-cw-27p"/> </connections> </splitViewController> <placeholder placeholderIdentifier="IBFirstResponder" id="nG8-BB-Qmu" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> <point key="canvasLocation" x="-157" y="-370"/> </scene> 

What's the difference?

 <keyCommands> <keyCommand/> </keyCommands> 

I do not know what it is, or how it got there, but when I deleted these 3 lines, the accidents disappeared. There is a UIKeyCommand class, but I never used it, so I'm not sure how appropriate it is. Hope this helps!

+5
source share

The magazine tells you what exactly is wrong.

You are trying to call isEqualToString for a null object.

Check if this object is the object you are expecting before calling isEqualToString on it.

However, since it was used to work with previous versions of the OS, just checking for null may not solve your problem. You may have to decide why this element is now null, where it has not been before.

0
source share

As already mentioned, you are crashing into [NSNull isEqualToString:]

If you don’t know where your code is located, you can set an exception checkpoint so that you know exactly where the accident is. You can do this by going to your Breakpoint Navigator. In the lower left corner there is a + button to add an exception breakpoint:

enter image description here

After you set this breakpoint, run the application again, and it should set a breakpoint where the failure occurred. Good luck

-one
source share

All Articles