【发布时间】:2012-04-15 07:20:43
【问题描述】:
我有 Xcode 4.3.1、iOS 5.1,并打开了 ARC 以构建我的应用程序。
现在应用程序在调试版本中运行良好,但在发布版本时崩溃。造成这种差异的可能原因是什么?我纯粹依靠ARC 进行资源管理。我查看了崩溃日志,它表明正在引用的内存已经被释放。使用ARC 时,可能导致零售构建问题的常见陷阱是什么?
以下是我从崩溃日志中得到的信息
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x6f636552
Crashed Thread: 0
编辑
应用的部署目标是 iOS 5.0。我确实使用互联网连接,当前崩溃发生在“渲染”从 Web 服务返回的数据以显示在UITableViewController 上时。整个应用程序都在使用ARC,除了我关闭了ARC 的来自第3 方的一些源文件。
【问题讨论】:
-
请提供更多提示,部署目标?您是否使用互联网连接?您的所有班级都使用 ARC 还是只使用其中的一部分?
-
完成,请参阅上面的更新
-
我认为最好在 sim 上使用僵尸工具来测试您的应用程序。您混合使用 ARC 和非 ARC 类的事实可能会导致使用委托或通知模式出现一些问题。很难理解为什么只在设备上而不是在 sim 上发生,但可能是由于两者之间的硬件差异。
-
哦,区别在于发布版本和调试版本,而不是设备与模拟器。
-
我明白了,但我认为无论如何它可能是这样的。如果您不发布整个崩溃日志,那么真的很难想象发生了什么。我正在考虑一个由连接回调异步调用的非空指针,所以是一个僵尸。仅在发布中发生的问题很难完全理解,但可能是由于不同的运行循环模式,您是否使用预处理器定义?像'#ifdef debug'等或类似的东西?您是否在多线程环境中使用网络连接?
标签: iphone ios release automatic-ref-counting