【问题标题】:0x8badf00d exception code on iPad running iOS 4.3, but not on iPad or iPhone running iOS 5.1运行 iOS 4.3 的 iPad 上的 0x8badf00d 异常代码,但运行 iOS 5.1 的 iPad 或 iPhone 上没有
【发布时间】:2012-09-10 01:29:49
【问题描述】:

我向我的医疗应用程序添加了一项新功能,允许用户将电子邮件附件导入应用程序的文档文件夹以供离线查看。将电子邮件附件导入运行 iOS 5.1 的 iPad 2 或运行 iOS 5.1 的 iPhone 4S 上的应用程序可以完美运行。但是,在运行 iOS 4.3 的原始 iPad 上,导入附件无法打开应用程序(它在显示启动屏幕之前挂起)。崩溃日志包含异常代码 0x8badf00d,并显示应用程序在尝试启动 20 秒后退出。虽然保持 iOS 4.x 兼容性并不重要,但如果这个问题可以解决,我想继续支持 4.x。我想知道这个问题是否与 iOS 4 或原始 iPad 的架构有关。任何想法都会非常感激,特别是因为在模拟器上测试这个错误似乎是不可能的。值得注意的是,除了 Apple 的可达性代码之外,应用程序的启动不需要任何网络活动;典型的启动时间几乎是瞬时的。谢谢。

【问题讨论】:

  • 尝试在尝试启动 10 秒后暂停您的应用程序并查看代码被阻止的位置。或者,您可以使用 Time Profiler 工具或类似工具来查看时间的去向。
  • Time Profiler 显示 (NSFileManager directoryContentsAtPath:matchingExtension:options:keepExtension:error:] 如果我暂时注释掉重命名导入的附件文件的代码并删除附件导入过程创建的收件箱文件夹,那么剩余的收件箱文件夹大小为 0 字节。似乎在 Mail 应用程序退出和我的应用程序启动之间发生了错误。同样,错误令人费解,因为在运行 iOS 5.x 的设备上该过程非常快。在这一点上,我怀疑 iPad 1 相对较慢的处理器速度是一个问题。
  • 经过代码替换的反复试验后,我发现此代码发生挂起,将附件文件名从其 url 转换为字符串(适用于 iOS5,但不适用于 iOS4):NSString *本地化名称 = 无; [url getResourceValue:&localizedName forKey:NSURLLocalizedNameKey 错误:NULL];非常感谢您的帮助并提醒我 Instruments 的用处。

标签: iphone exception ios4


【解决方案1】:

如果导入新数据需要很长时间,则不应在应用程序中导入附件:didFinishLaunching:。您应该立即向用户显示微调器或类似内容,然后在后台线程上完成导入过程。

要检查的另一件事是确保您没有简单地出现错误的无限循环,或者一遍又一遍地调用 directoryContentsAtPath:matchingExtension:options:keepExtension:error 的其他东西。

【讨论】:

    【解决方案2】:

    操作系统说启动时间过长。缩短启动时间。

    假设您的应用已挂起,这是正在杀死您的应用的看门狗计时器。现在,为什么最慢的设备最先出现问题也就不足为奇了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多