【问题标题】:iOS7 - App causes device (not app) to crashiOS7 - 应用程序导致设备(不是应用程序)崩溃
【发布时间】:2013-10-16 01:59:27
【问题描述】:

我们公司有一个基本上是电子书阅读器的应用程序。

我们使用RMSDK 进行图书下载和阅读。

现在,iOS7 设备中发生了一些非常奇怪的事情(不是在模拟器中):

  1. 我使用 RMSDK 中的实现方法下载了一本书
  2. 我正在等待这本书完成下载。这本书保存在 NSCachesDirectory 中(出于 App Store 指南的原因) - 到目前为止,一切正常
  3. 我点击主页按钮,应用程序移至后台
  4. 我点击了应用按钮以恢复应用,这时问题发生了:

应用程序完全卡住了。点击主页按钮没有任何作用,点击电源按钮关闭屏幕,但再次点击电源按钮没有任何作用。 设备本身实际上已经崩溃了。

几分钟后,Apple 徽标出现在设备上,设备在重新启动后恢复生机。

我不知道我的代码中的什么可能导致设备以这种方式运行。 iOS7 沙盒不应该阻止我让整个设备崩溃吗?

任何关于为什么会发生这种情况以及我可以做些什么来防止它的想法将不胜感激。

编辑: 我在 AppDelegate 中的 -(void)applicationDidBecomeAcvive: 方法上放置了一个断点,并且在崩溃前的最后一个阶段单击应用程序图标时不会调用它。

编辑: RMSDK 使用 libcurl 下载书籍。这可能是导致这种行为的原因吗?

编辑: 如果我在单击主页按钮后单击 ANY 应用程序,而不仅仅是在同一个应用程序上,则会出现问题。例如,我点击主页按钮,然后尝试打开Fruit Ninja,然后设备崩溃了。

【问题讨论】:

  • 如果您的应用程序崩溃了 iOS,那是一个 iOS 错误,无一例外。沙盒不会阻止操作系统级别的错误导致崩溃。提交错误并希望最好。
  • 我们已经这样做了,但我希望获得一些关于我可能正在做的事情的信息。我们已经有几个使用这个应用程序的主要客户,现在等待 Apple 的回应还不够好:/
  • 你有没有实现任何关于多任务处理的事情?
  • 有,但我已经尝试删除它们,看看是否有任何区别,但没有
  • 巨大的瞬时内存消耗可以使跳板重新启动,或者冻结。尝试使用内存分配和 vm 跟踪器进行分析。

标签: iphone ios7


【解决方案1】:

我们通过禁用 RMSDK 中调用 mkfifo() 的函数设法解决了这个问题。由于 NDA,我不确定我能在这里说多少,但它们都位于一个文件中,并且可以通过一个不错的预处理器干净地转换为无操作 #if defined()

【讨论】:

    【解决方案2】:

    这是一个操作系统级别的错误。 iOS 7 在某些方面仍然不稳定,例如我的应用程序报告在属于 iOS 7 本身的地方发生崩溃,并且不是由我的应用程序引起的。

    【讨论】:

    • 感谢您的回答,但我的代码中显然有一些东西导致操作系统以这种方式做出反应。虽然我知道这源于操作系统中的问题,但我正在寻找我的代码中的快速修复,或者至少了解我的代码可能正在做什么以引起操作系统的这种反应。
    • 一定是没有从缓存目录中正确读取?再次打开它会崩溃吗?
    • 没有。设备重新启动后,之前下载的所有书籍都存在并且可以毫无问题地访问。该场景专门在下载后发生。
    • 这一定与应用恢复状态有关。有没有与状态恢复有关的代码?
    • 不,与状态恢复无关。我可以确认 applicationWillReturnToForeground 方法甚至没有被调用。
    猜你喜欢
    • 2022-10-31
    • 2015-10-21
    • 2016-06-04
    • 2011-08-24
    • 2014-05-03
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    相关资源
    最近更新 更多