我在我的通用iOS应用程序中遇到这个奇怪的问题。在分析应用程序时,我没有看到仪器工具中存在任何有效的内存泄漏。每页更改时,分配的大小仍然增加50-100 kb。泄漏仪器仅显示负责调用者的一些泄漏,如mem_alloc。
经过一段时间的使用后,应用程序开始接收内存警告,并在应用程序中停留更多时间,应用程序崩溃。有趣的是,此时的总内存分配在6到12 MB之间。当我在调试模式下回溯时,App也没有显示任何堆栈信息。
我完全不知道为什么会发生这种崩溃。任何帮助将不胜感激。
附上我的乐器的一些屏幕截图。
答案 0 :(得分:3)
您需要在应用中检查以下内存分配 -
使用Instruments
支票Allocation
和Leaks
使用静态内存分析器检查静态内存泄漏。 要使用它,请使用“cmd + shift + B”或转到“Xcode - >产品 - >分析”
此外,您需要确保正确释放视图控制器。
答案 1 :(得分:1)
虽然我问这个问题的时间很长,但没有得到任何正确答案。在回访我的问题时,我认为解决这个问题将有助于其他早期的初学者。所以我在这里发布我的解决方案:
在这种情况下真正的罪魁祸首是我在应用程序中使用图像的方式。我只是通过调用[UIImage ImageNamed:]来使用它。实际上,这种方法会泄漏图像大小的内存。
解决这个问题的方法是通过调用ImageWithData来使用image(见下面的代码):
NSString *fileLocation = [[NSBundle mainBundle] pathForResource:fileName ofType:extension];
NSData *imageData = [NSData dataWithContentsOfFile:fileLocation];
[UIImage imageWithData:imageData];
希望这有助于某人。