【问题标题】:Flurry API crashing iPhone simulatorFlurry API 崩溃 iPhone 模拟器
【发布时间】:2011-11-07 16:03:21
【问题描述】:

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

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

另一方面,该应用在真实设备上运行良好。

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

【问题讨论】:

  • 在升级到最新的 Flurry 库(并用 FlurryAnalytics 替换我的旧 FlurryAPI 调用...)后得到完全相同的东西
  • 当我们在代码中执行 [FlurryAnalytics startSession:FLURRYAPIKEY] 时,Flurry 为其代理创建的线程中会发生这种情况。仍然不知道如何检查导致问题的呼叫来自何处。
  • 同样的问题,找不到解决办法。我更新到 Flurry 3.0.4,但仍然在模拟器中遇到问题,无论是 4.3 还是 5.0。
  • 我在我的代码 [FlurryAnalytics startSession:FLURRYAPIKEY] 中注释掉这一行只是为了在模拟器中运行应用程序......我知道这并不理想,但我没有找到更好的东西跨度>

标签: iphone objective-c crash flurry


【解决方案1】:

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

#if TARGET_IPHONE_SIMULATOR
        [FlurryAnalytics setSessionReportsOnPauseEnabled:NO];
#endif

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

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

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

      【讨论】:

      • 感谢您的回答,但启用 NSZombies 并没有给我任何额外的信息 :(
      猜你喜欢
      • 2012-01-04
      • 2011-05-16
      • 1970-01-01
      • 2011-07-02
      • 2017-08-22
      • 2012-02-21
      • 2011-03-20
      • 2010-12-24
      • 1970-01-01
      相关资源
      最近更新 更多