【发布时间】: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