2012-03-14 159 views
-1

最近我的iphone项目走到了尽头,但在应用程序运行期间遭受了一些随机崩溃,并且调用堆栈始终位于COCOA库中,难以解决问题,不知道如何处理它,因为有些案例我甚至怀疑是苹果的缺陷?Iphone随机崩溃问题

我的问题。

  1. 对于那些重现率很低的随机崩溃问题,你们如何处理它?任何有助于提高可重现率的方法?

  2. 如何解决位于COCOA库中的这些崩溃问题?如何找到更多线索?

任何想法或讨论将不胜感激,在此先感谢。

+3

你的代码是什么样的,你试过了什么?当你的应用程序崩溃时,你也需要发布你在Log中获得的内容。 – 2012-03-14 07:25:32

+0

由于大部分时间内存问题都会发生应用程序崩溃不一致......请在仪器中分析您的代码。 – Tirth 2012-03-14 07:52:36

回答

0

意味着COCOA代码是错误的 - 很可能你向它提供了一些无效的数据(例如,它不应该在那里)。如果它随机发生,可能会出现一些多线程并发性,或者某些对象变得(自动)发布得太早等等。您必须认真分析您的代码,这些代码可以在崩溃发生的COCOA类中运行,或者尝试将内存管理调试由其他答复者建议。

+0

如何让这种随机崩溃更容易重现?由于重现是开始修复的第一步,任何有这种经验的人请分享,谢谢。 – jianhua 2012-04-17 06:17:12

+0

不幸的是,没有通用的配方,基于你使用的API可以依赖于你可以想象的任何东西。寻找随机崩溃的可重复性(以及因此!)往往更复杂,然后修复错误。一些可能导致随机性的想法:同时发生的线程修改相同的对象,过早的对象自动释放,事件提供者释放(或未创建)的事件处理程序等等。 – MrTJ 2012-04-17 08:31:23

0

一般来说,我并不认为这是COCOA的问题。它发生了,但大多数情况下,错误是我们的错误。

当这种崩溃发生时,首先要做的就是运行静态分析器,有时候这只是一个保留/释放问题。 如果您使用ARC,请跳过此部分并开始创建异常断点(在链接指南中搜索'To add an exception breakpoint...')。异常断点有助于在抛出异常时获得更详细的崩溃日志。

第三步是使用仪器,寻找浪费记忆,泄漏和任何其他形式的内存泄漏。在一些WWDC视频中深入解释了如何使用乐器。

0

启用NSZombie标志。 项目(在Xcode的顶LeftCorner)>诊断>使僵尸对象

将LTE你知道在那里我们的代码崩溃..find如果可可代码的应用程序崩溃,没有它解决它

+0

是的,有助于解决某些指针发布崩溃问题。 – jianhua 2012-04-17 06:17:47