4

我的应用程序在 Xcode 4.2 中使用 iOS5 和 iOS4.3 iPhone 模拟器崩溃,堆栈跟踪在 [FlurryAPI stopBackgroundTask] 方法中显示 BAD_ACCESS 信号。

在 iOS4.3 模拟器中,应用程序仅在将应用程序发送到后台时崩溃,而在 iOS5 中总是崩溃。我附上了调试导航器的图片,显示了 BAD_ACCESS 发生的线程。

另一方面,该应用程序在使用真实设备时运行良好。

关于如何获得有关正在发生的事情以及为什么会发生的更多信息的任何想法?

在此处输入图像描述

4

3 回答 3

7

我通过将以下内容添加到 didFinishLaunchingWithOptions 解决了这个问题

#if TARGET_IPHONE_SIMULATOR
        [FlurryAnalytics setSessionReportsOnPauseEnabled:NO];
#endif
于 2012-01-30T06:54:22.383 回答
2

Flurry 分析除了主线程外不运行。它可能会在后台线程上崩溃。

于 2012-08-13T11:34:12.120 回答
1

看起来你有一个僵尸——你有一种情况,你在发布代码后就在使用它。保留计数达到零,因此系统释放并重新使用内存,然后您通过原始引用进行更改。现在您对同一内存有两个不同的引用,每个引用都希望有一个不同的对象。在您的情况下,其中一个参考文献是仓促的。

您的设备/模拟器差异的原因是两种架构使用的不同内存分配方案 - 模拟器似乎非常积极地重用内存。

启用 NSZombie 并在调试器中运行。如果你幸运的话,它会给你对象和它在释放后使用的点。

启用 NSZombie:菜单“产品”、“编辑方案...”、“运行”页面、“诊断”选项卡,勾选“启用僵尸对象”。

于 2011-11-08T06:49:30.023 回答