应用程序崩溃整个设备在Segue上为iOS 9 + Xcode 7
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了应用程序崩溃整个设备在Segue上为iOS 9 + Xcode 7相关的知识,希望对你有一定的参考价值。
更新:我在这一年里使用了我的一个DTS。目前正在与Apple支持工程师合作。根据他的建议,我还为此创建了一个错误报告。我会随着时间的推移更新这个线程,希望能够得到最终的解决方案。
不知何故,我已经找到了一种创建应用程序的方法,该应用程序可以重新启动模拟器和/或物理设备。为我而欢呼。当我升级到xcode 7并开始针对ios 9进行测试时,这个问题就出现了。在任何设备/模拟器<iOS 9上,这个问题并没有让人头疼。
当我运行它附加到Xcode时,我看到的唯一日志消息是
XPC connection interrupted
Terminating since there is no system app.
我把它缩小到了一段调用的代码
[self addChildViewController:segue.destinationViewController];
此代码是以这个qazxsw poi的风格创建的“Multi child ContainerViewController”的一部分
在这一点上,我只是不知道在哪里寻找/做什么来解决这个问题。如果我注释掉childviewcontroller的添加,一切都很好,应用程序正常运行。如果我不评论它,它会重新启动我的整个模拟器。
有关在何处查找其他调试信息或潜在修复的任何想法?我只是不知道在哪里查看这一点以找到更多信息反过来用来寻求帮助。任何帮助表示赞赏,谢谢。
编辑:我不知道这是否有帮助,但我能够在实际的iOS模拟器system.log中搜索它。似乎没有任何引用我自己的代码库,只是背板?
view controller
编辑:我还想强调,这不仅仅是导致应用程序崩溃,这导致整个模拟器重新启动。我也可以在物理设备上触发重启。如果这只是一个在NSNull上调用isEqualToString的简单情况,那不应该只会崩溃我的应用程序吗?不是整个模拟器?
我想我明白了!我很确定我的问题和你的问题一样。相同的崩溃日志和情况。
我试图找出问题,所以我将我的故事板复制到一个空白项目并删除所有连接并使所有类都默认(没有自定义类)。
经过一番游戏后,我决定尝试将不同的拆分视图控制器重新链接到相同的主视图和详细信息类。有用!所以我比较了所有的设置,字面上没有什么不同。该死的。
现在怎么办?打开源代码。右键单击左窗格中的故事板,然后选择“使用外部编辑器打开”。这应该打开故事板的源代码。我比较了两个分割视图控制器的源代码,发现了一个区别。
这是我看的地方
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
)
有什么不同?
<!--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>
我不知道它是什么,或它是如何到达那里的,但当我删除这3行时,崩溃就消失了。有一个<keyCommands>
<keyCommand/>
</keyCommands>
类,但我从来没有使用它所以我不确定它是否相关。希望这可以帮助!
日志告诉您到底出了什么问题。
您正尝试在null对象上调用isEqualToString。
在调用isEqualToString之前,检查此对象是否是您期望的对象。
但是,由于它曾用于以前的OS版本,只需检查null可能无法解决您的问题。您可能需要弄清楚为什么此项目现在为空,而不是以前的项目。
正如其他人提到的那样,你在UIKeyCommand上崩溃了。
如果您不确定代码中的位置,可以设置异常断点,以便准确了解崩溃的位置。您可以通过转到Breakpoint Navigator来完成此操作。在左下方,有一个+按钮,您可以添加异常断点:
[NSNull isEqualToString:]
设置断点后,再次运行应用程序,应该在崩溃的位置设置断点。
以上是关于应用程序崩溃整个设备在Segue上为iOS 9 + Xcode 7的主要内容,如果未能解决你的问题,请参考以下文章
在 prepareForSegue 上为 Popover Segue 传递数据:iOS 5 中的奇怪行为
我的应用程序在 Xcode 10 正式版 Seed 上传的 iOS9.1 和 9.2 设备中崩溃
在 ios-9.3 上运行良好的应用程序,但是当我在任何具有 IOS-10 的设备上运行它时,它会在随机点崩溃
iOS 6 Storyboard Segue 风格 Popover 与 UIPopoverController 目标崩溃