不知何故,我已经想出了一种创建应用程序的方法,该应用程序可以重新启动模拟器和/或物理设备.为我而欢呼.当我升级到xcode 7并开始针对iOS 9进行测试时,就会出现此问题.在任何设备/模拟器上< iOS 9,这个问题并没有让人头疼. 当我运行它连接到Xcode时,我看到的唯一日志消息是
XPC connection interrupted Terminating since there is no system app.
[self addChildViewController:segue.destinationViewController];
此代码是以此view controller的样式创建的“MultichildContainerViewController”的一部分
在这一点上,我只是不知道在哪里寻找/做什么来解决这个问题.如果我注释掉childviewcontroller的添加,一切都很好,应用程序正常运行.如果我不评论它,它会重新启动我的整个模拟器.
有关在何处查找其他调试信息或潜在修复的任何想法?我只是不知道在哪里查看这一点以找到更多信息反过来用来寻求帮助.任何帮助表示赞赏,谢谢.
编辑:
我不知道这是否有帮助,但我能够在实际的iOS模拟器system.log中搜索到这一点.似乎没有任何引用我自己的代码库,只是背板?
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 )
编辑:我还想强调,这不仅仅是导致应用程序崩溃,这导致整个模拟器重新启动.我也可以在物理设备上触发重启.如果这只是一个简单的呼叫案例
isEqualToString
在NSNull上,不应该只是崩溃我的应用程序?不是整个模拟器?
解决方法
我试图隔离问题,所以我将我的故事板复制到一个空白项目并删除所有连接并使所有类默认(没有自定义类).
经过一些游戏后,我决定尝试将不同的拆分视图控制器重新链接到相同的主类和详细类.有用!所以我比较了所有的设置,字面上没有什么不同.该死的.
现在怎么办?打开源代码.右键单击左窗格中的故事板,然后选择“使用外部编辑器打开”.这应该打开故事板的源代码.我比较了两个分割视图控制器的源代码,发现了不同之处.
这是我看的地方
<!--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>
有什么不同?
<keyCommands> <keyCommand/> </keyCommands>
我不知道它是什么,或它是如何到达那里的,但当我删除这3行时,崩溃就消失了.有一个UIKeyCommand级,但我从来没有使用它所以我不确定它是否相关.希望这可以帮助!