多视图应用程序崩溃

时间:2009-08-05 16:14:30

标签: iphone

我有一个应用程序,它有一个tabBar控制器和一个navBar控制器。它有~8个视图(各种web,表,标准,邮件,地址等),有些是使用IB创建的,有些是使用XCode创建的,用于制作表视图。我运行了内存泄漏测试仪,它没有内存泄漏。它可以随时在任何视图上崩溃,如果我在视图之间来回切换并使用它关闭应用程序的一些功能。

我假设我正在运行1)内存不足或2)没有正确释放视图,导致应用程序关闭。该应用程序很简单,所以我不知道我是如何失去记忆的,我已经尽最大努力正确地检查了代码。

所以这是我的问题清单:

1)什么以及如何使用其他一些调试工具(或告诉我应该使用哪些工具/文件)?我想将问题缩小到其来源。

2)发布这些观点的最佳做法是什么?怎么样?

3)普通应用程序使用多少内存?我应该留下一些数字吗?如何在模拟器中验证?分配工具?

请随意向我指出可以帮助我的苹果文档或其他stackoverflow问题。

更新:它似乎只是崩溃了一个使用的视图,它有一个带有自定义单元格的表格视图......单元格是从一个plist文件中填充的......这个视图几天前工作正常,我注意到一些单元格没有来自plist文件的数据...它可能是plist文件问题而没有存储正确的数据。我会继续努力。

UPDATE#2:我回到了我的文件的旧版本,当这个特殊的tableView工作得很好(3.0之前)并猜测它的工作原理很好,我用这个应用程序的版本将模拟器更改为3.0 bam崩溃在这个tableView上显示。感谢您的帮助到目前为止,我会尝试下面提到的一些事情,让你知道我发现了什么。如果你有一些关于为什么一个tableView w / 2.2.1到3.0的自定义单元格会开始崩溃的提示,我会接受它们。如果我无法到达任何地方,我会尽快发布代码。顺便说一句,我上面说错了,我以为它没有在模拟器中崩溃......我错了。

解决方案:感谢您的故障排除提示,修复非常简单,但奇怪的是它没有在2.2.1中崩溃...它应该很久以前崩溃了问题,我发布了一个对象在我的自定义单元格中很多次......呃。

2 个答案:

答案 0 :(得分:0)

在第一代和第二代手机上,你真的不想超过大约20兆的实际内存使用量 - 一旦你克服了你就有被跳板杀死的风险。

我见过的一个大罪魁祸首就是自动释放内存,因为自动释放池可以比你真正想要的更长时间地保留内存 - 如果你使用了很多自动释放的对象,这可能是一个潜在的问题。您可以通过在可能的情况下更明确地保留/释放并通过手动创建本地自动释放池并在使用大量自动释放的对象执行更密集的操作后释放它们来改进这一点。

跟踪我到目前为止发现的实际内存使用情况的最有效方法是在测试手机上运行调试版本并使用Activity Monitor运行。这将让您清楚地了解应用程序将占用多少内存。以及当它崩溃时使用了多少。

您可以在运行菜单上的Xcode中使用Activity Monitor运行 - >从性能工具开始 - >活动监控。

另一个非常有用的工具是CLang静态分析器,您可以针对您的代码库运行,并且可以提供一些非常有用的内存管理信息。如上所述here

答案 1 :(得分:0)

我要尝试的一件事是将一些调试消息放入didReceiveMemoryWarning方法中。这样,如果你 内存不足,你至少会有一些警告。