【问题标题】:ios puzzle app crashes after a few roundsios拼图应用程序在几轮后崩溃
【发布时间】:2013-11-03 05:20:03
【问题描述】:

我有一个 iPhone 应用程序,它似乎存在内存泄漏问题。这是一款益智游戏,经过几道谜题后,应用程序在设备上崩溃。

我现在正在尝试使用 xcode Instruments 来检测正在发生的事情。第一次使用 Instruments。

我注意到“泄漏”图中有一个泄漏条,就在加载视图的时间: What are these memory leaking objects, detected by xCode Instruments? .但是这些泄漏的对象很小,所以我猜我的应用程序还有其他问题。

当我的应用程序继续运行时,通常在 iPad 2 上运行 10 多轮,然后它就会崩溃。我对 Instruments 还不太了解,所以我看“All Heap Allocations”。在第一轮拼图开始时,“#Overall”列约为 70k,它在每轮拼图之间缓慢增长。当一个新的回合谜题出现时,它会达到 ~90k,然后逐轮达到 ~200k,然后崩溃。

在崩溃之前,我在日志控制台中看到内存警告和“连接中断”。

在搜索内存泄漏后,我已经关注了一些事情,例如将 NSArray/NSDictionary 或 mutable 设置为 nil,尽可能地(尽管不是全部,因为有些在谜题之间)。我还将 UIImage imageNamed 更改为 [UIIMage alloc] initWithContentOfFile。

我还应该查看/检查什么以了解导致内存问题的原因?蒂亚!

编辑: 我希望我可以发布一些可能是嫌疑人的代码,但我真的不知道该发布什么部分。我应该在课程开发中通过 Instruments 进行检查,以便知道是什么导致了问题。

关于其他视图控制器。我确实有其他(菜单、设置、应用商店价格等),我通过代码生成了所有这些。我的应用没有情节提要或 nib 文件。当我测试崩溃时,我只需单击 Next Puzzle 按钮,因此所有其他视图都不会显示。所以,在崩溃之前,唯一显示的视图是主视图,有几个按钮,几个子视图,一个动画图片(但只有第一个谜题作为介绍)。如果有帮助,这是我的应用程序: http://itunes.apple.com/us/app/wordsect/id599455449?ls=1&mt=8

【问题讨论】:

  • 在不了解您的应用程序的情况下很难为您提供建议。你有多个视图控制器吗?你如何在他们之间移动?当您开始新一轮时,您是否开始使用新的控制器“新鲜”?旧的被释放了吗?
  • 另外贴一些有问题的代码可能对兄弟有帮助。
  • @rdelmar,我在原始帖子中添加了几行,以便其他人可以看到。谢谢。
  • 你能发布下一个拼图按钮的代码吗?另外,当你进入下一个谜题时,之前的谜题是否会从记忆中删除并移除?
  • setupStage 方法呢?除了 rdelmar 的提示之外,您创建视图或添加资产的任何地方都是一个不错的查看位置。

标签: ios objective-c crash


【解决方案1】:

如果您尝试使用 Instruments 调试应用程序 - 启用僵尸检测模式:

  1. Xcode:产品->方案->编辑方案
  2. 选择调试方案
  3. 在方案描述上选择参数标签栏
  4. 在环境变量中添加并检查 NSZombieEnabled 变量

然后,当您在 Instruments 控制下启动应用程序时,您将在应用程序崩溃时获得实例的名称。

【讨论】:

    猜你喜欢
    • 2016-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多