即使没有有效的内存泄漏,我的应用程序也会收到内存警告

时间:2012-05-18 05:53:42

标签: iphone objective-c ios memory-leaks

我在我的通用iOS应用程序中遇到这个奇怪的问题。在分析应用程序时,我没有看到仪器工具中存在任何有效的内存泄漏。每页更改时,分配的大小仍然增加50-100 kb。泄漏仪器仅显示负责调用者的一些泄漏,如mem_alloc。

经过一段时间的使用后,应用程序开始接收内存警告,并在应用程序中停留更多时间,应用程序崩溃。有趣的是,此时的总内存分配在6到12 MB之间。当我在调试模式下回溯时,App也没有显示任何堆栈信息。

我完全不知道为什么会发生这种崩溃。任何帮助将不胜感激。


附上我的乐器的一些屏幕截图。 enter image description here enter image description here enter image description here

2 个答案:

答案 0 :(得分:3)

您需要在应用中检查以下内存分配 -

  1. 使用Instruments支票AllocationLeaks

  2. 使用静态内存分析器检查静态内存泄漏。 要使用它,请使用“cmd + shift + B”或转到“Xcode - >产品 - >分析”

  3. 此外,您需要确保正确释放视图控制器。

答案 1 :(得分:1)

虽然我问这个问题的时间很长,但没有得到任何正确答案。在回访我的问题时,我认为解决这个问题将有助于其他早期的初学者。所以我在这里发布我的解决方案:

在这种情况下真正的罪魁祸首是我在应用程序中使用图像的方式。我只是通过调用[UIImage ImageNamed:]来使用它。实际上,这种方法会泄漏图像大小的内存。

解决这个问题的方法是通过调用ImageWithData来使用image(见下面的代码):

NSString *fileLocation = [[NSBundle mainBundle] pathForResource:fileName ofType:extension];
NSData *imageData = [NSData dataWithContentsOfFile:fileLocation];
[UIImage imageWithData:imageData];

希望这有助于某人。