我的应用程序在Xcode 4.2中使用iOS5和iOS4.3 iPhone模拟器崩溃,堆栈跟踪显示[FlurryAPI stopBackgroundTask]方法中的BAD_ACCESS信号。
在iOS4.3模拟器中,应用程序只在将应用程序发送到后台时崩溃,在iOS5中总是崩溃。我附上调试导航器的图片,显示发生BAD_ACCESS的线程。
另一方面,该应用程序使用真实设备正常工作。
有关如何获取有关正在发生的事情及其原因的更多信息的任何想法?
答案 0 :(得分:7)
我通过在didFinishLaunchingWithOptions中添加以下内容解决了这个问题
#if TARGET_IPHONE_SIMULATOR
[FlurryAnalytics setSessionReportsOnPauseEnabled:NO];
#endif
答案 1 :(得分:2)
Flurry分析除主线程外不会运行。它可能会在后台线程上崩溃。
答案 2 :(得分:1)
看起来你有一个僵尸 - 你有一个情况,你发布它后使用代码。保留计数达到零,因此系统取消分配并重新使用内存,然后通过原始引用进行更改。现在,您对同一个内存有两个不同的引用,每个引用都需要一个不同的对象。在你的情况下,其中一个引用是在乱七八糟。
您的设备/模拟器差异的原因是两种架构使用的不同内存分配方案 - 模拟器似乎非常积极地重用内存。
启用NSZombie并在调试器中运行。如果你很幸运,它将为你提供解除分配后使用的对象和点。
启用NSZombie:菜单'产品','编辑方案...''运行'页面,'诊断'标签,勾选'启用僵尸对象'。