iOS应用程序崩溃,没有错误和崩溃报告。

3
我目前正在导入所有Facebook生日,并将它们插入核心数据,然后根据最新的生日(获取和排序)对它们进行排序。当我使用Facebook同步并获取所有联系人时,我的应用程序完美地检索到了所有联系人,但在接收到联系人后不久就会崩溃。
我尝试使用僵尸对象。
我尝试泄漏检测。
我尝试在异常导航器中添加异常。
我将我的iPod与iTunes同步,转到库和设备日志,但找不到任何文件,显示低内存问题或类似的内容。
我感到困惑,因为崩溃的原因没有显示出来,它只是崩溃了,当我再次打开我的应用程序时,我可以看到从Facebook导入的所有联系人。
调试器窗口中没有LLDB,在将其更改为GDB时,我可以看到GDB,但当我使用回溯(bt)时,它会说“无堆栈”。
我还注意到有一件事,即如果联系人太多,我的应用程序会崩溃,而如果联系人较少,则可以正常工作。
可能的问题是什么?它是否因为内存问题而崩溃?我该如何知道是什么导致了崩溃?
谢谢。

它是否可重复?在Debug和Release构建配置中,是否发生相同的行为?如果使用Debug,请检查所有作为特定用例的一部分或结果而发生的日志记录语句。您可能会发现一些被忽视的警告。 - YvesLeBorg
com.apple.launchd[1] (UIKitApplication:com..[0x589e][2041]) <Notice>: (UIKitApplication:com..[0x589e]) 已退出:被杀死:9。这是设备日志中的记录,因此与内存问题有关。 - vin
2个回答

10

你的应用程序很可能因为内存不足而被终止。

最好的方法是使用Xcode的组织器查看设备控制台:

enter image description here

如果iOS内存不足并且正在关闭您的应用程序,您应该会看到类似于这样的内容:

<Notice>: jetsam: kernel termination snapshot being created
<Warning>: Application 'UIKitApplication:com.yourapp[0x6337]' exited abnormally with signal 9: Killed: 9

你应该使用Instruments中的Activity Monitor来查看你的应用程序正在使用多少内存。

你还可以使用Memory Monitor仪器,并启用“Physical Memory Free”的图形显示。如果在崩溃之前你看到图形接近0,那么很可能是一个内存问题。

enter image description here


请注意,即使您使用类似Crashlytics的崩溃报告工具,如果应用程序因内存问题而终止,您也不会收到任何报告。 - ahwulf
@Mike Weller 你是对的,这是一个内存问题,在它崩溃之后日志显示如下:com.apple.launchd [1](UIKitApplication:com.. [0x589e] [2041])<Notice>:(UIKitApplication:com.. [0x589e])已退出:被杀死:9 谢谢你的帮助,我想知道如何在你提供的快照中获取单个内存监视器。 - vin

0
尝试将一些内存释放代码放入viewDidUnload中。例如,如果您使用鼠标在代码和xib之间创建链接,则xcode会自动生成当前元素的代码。

viewDidUnload在iOS6中已被弃用且不再被调用。请参阅http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/DeprecationAppendix/AppendixADeprecatedAPI.html。 - Kerni
由于您需要更改iOS6的代码,因此只需实现一种适用于两者的方式即可。 - Kerni

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接