2

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

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

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


附上我仪器的一些屏幕截图。 在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

4

2 回答 2

3

您需要在应用程序中检查内存分配 -

  1. 使用Instruments检查AllocationLeaks

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

您还需要确保正确释放视图控制器。

于 2012-05-18T06:06:06.957 回答
1

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

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

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

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

希望这可以帮助某人。

于 2014-09-06T03:36:30.717 回答