在开发我的应用程序时,我逐渐意识到我的大多数应用程序崩溃都源于糟糕的内存管理。
我知道我可以通过NSLog打印或记录保留计数(@“保留计数为:%d”,[myInstance retainCount]);
但是,有没有更好的,更少手动的方法?可能是对象和实例的直观表示?
回答。干杯,亚当&杰森。 : - )
答案 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追踪对象的分配位置。