在测试我的iPhone应用程序时跟踪内存管理的最佳方法是什么?

时间:2009-01-06 11:20:32

标签: iphone cocoa-touch memory-management

在开发我的应用程序时,我逐渐意识到我的大多数应用程序崩溃都源于糟糕的内存管理。

我知道我可以通过NSLog打印或记录保留计数(@“保留计数为:%d”,[myInstance retainCount]);

但是,有没有更好的,更少手动的方法?可能是对象和实例的直观表示?

回答。干杯,亚当&杰森。 : - )

4 个答案:

答案 0 :(得分:6)

通过XCode使用Leaks和Object Allocation工具。

Run > Start with Performance Tool > ...

答案 1 :(得分:3)

除了其他答案之外,我强烈建议您使用clang对代码进行静态内存分析。它不会捕获每个内存管理错误,但它确实捕获了很多。如果您的主要问题似乎来自内存管理错误,那么clang将在很大程度上找到这些错误。 Clang是免费的,http://clang.llvm.org/

答案 2 :(得分:2)

正如亚当所说,仪器对于这类事物来说是一个非常有用的工具。它相当容易使用,但起初可能有点压倒性。我建议您在开始时仔细阅读Instruments User Guide。这很容易理解,并且在您使用仪器一段时间之前有所帮助。然而,即使没有阅读指南,仪器仍然比使用NSLog()调用乱丢代码并尝试自己解析输出更容易,更直观;)

答案 3 :(得分:0)

我还发现NSZombie技巧可用于跟踪过度释放对象的情况。

基本上,链接描述了一个'技巧',以便释放的对象被NSZombie对象替换,如果它们再次被释放则抛出异常。

然后,您可以使用Instruments追踪对象的分配位置。