【问题标题】:iOS 4.3.2 user reported app crashing on launchiOS 4.3.2 用户报告应用程序在启动时崩溃
【发布时间】:2011-05-08 17:18:33
【问题描述】:

我的应用程序的更新刚刚获得 Apple 批准,用户现在抱怨该应用程序不再启动。它也发生在一些新用户身上。

我完全不知道问题出在哪里,也无法重现问题。在提交更新之前,我已经在各种设备(和模拟器)上测试了更新:运行 3.1.3 的 iPhone 2G、运行 4.3 的 iPod Touch 2G、运行 4.3.1 的 iPhone 3G 和 iPhone 4。他们都按预期工作。该更新有一些新功能,例如使用 AssetsLibrary 框架从用户的照片库中随机挑选照片,我已将该框架弱链接以支持 iOS 3,并且该功能在用户选择之前不会加载,因此应该不是问题。毕竟,更新已经过 Apple 的测试和批准。

我很难从有问题的用户那里收集崩溃信息,但我知道其中一位使用 iPhone 4 和 iOS 4.3.2。快速谷歌搜索显示 iOS 4.3.2 在启动第三方应用程序时出现问题,我怀疑我的问题与此有关,但我无法确认。我打算将我的开发 iPhone 4 降级到 iOS 4.3.2 来测试它。

这里有人遇到过类似的问题吗?由于负面评价,我的应用排名已大幅下降,因此我需要尽快解决此问题。

编辑:

  • 应该没有任何看门狗问题,我在上面提到的带有和不带有 Xcode/调试器的设备上测试了更新。

  • 内存管理。我无法重现该问题(我非常努力)所以我无法确认它是否是 EXC_BAD_ACCESS,我确实检查了引用计数并在适用时检查了 nil 释放对象(安全释放),我绝对不是内存管理方面的专家,所以我接受它说真的,我用仪器检查了泄漏和分配,压力测试并做了内存警告模拟,没有发现问题。

  • 我在-loadview 中有UIApplicationWillEnterForegroundNotification,它只在iOS 4.0 之后可用,所以我用& 运算符检查它是否存在,因为我使用它。

  • 除了在NSUserDefaults 中保存 facebook 连接令牌和到期日期 (NSDate) 之外,我不会保留数据,因为新用户也会遇到此问题,所以我认为这是其他问题

【问题讨论】:

  • 我今天也有同样的痛苦经历,真的很难找到。我找到了我的问题的答案,并且正在努力修复。我建议您发布导致崩溃的视图控制器的代码。如果你真的不能这样做,那么检查刚刚声明但没有指向 nil 的对象。例如更改“NSError *error;”到“NSError *error = nil”。
  • 我确实有一个在声明时不指向 nil 的对象,它是一个新功能的一部分,它有问题且不重要,所以我完全删除了它。由于我无法重现该问题,我无法确认是否是这样。不过,感谢您的意见!
  • 您的代码或库中是否存在使用块、Grand Central Dispatch 或 weak 引用的地方?在为 iOS 3.x 和 iOS 4.x 构建时,这些都不支持。

标签: ios iphone


【解决方案1】:

很遗憾,我们需要更多信息。但就在我的脑海中:

  • Watch dog?当你启动你的应用程序时,你加载了什么类型的东西?可能是存在此问题的设备上的资源受到限制,而您正在做的工作应该在单独的线程中完成,或者延迟到应用启动之后。

  • EXC_BAD_ACCESS。可能会出现竞争情况,导致大多数人能够启动 OK,但对于某些人来说,由于引用错误,它无法正常工作。我知道,您可以像专业人士一样编写出色的代码并管理参考资料,但有时可能会出现不明显的失误。

  • 您是否安全地实例化了某些类型的类?曾经让我印象深刻的一个例子是MFMailComposeViewController 类。在实例化之前,您应该调用它的静态方法canSendMail。如果用户没有在他们的设备上设置任何邮件帐户(很难想象会有任何人适合这种情况,但是嘿!更新后发现有很多!)然后应用程序就会崩溃。

  • 您有哪些数据持久性(如果有)?你在使用核心数据吗? plist中的序列化对象? NSUserDefaults?您的策略可能会破坏您保存的数据并导致崩溃。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-18
    • 1970-01-01
    • 2018-12-27
    • 1970-01-01
    相关资源
    最近更新 更多