10

我的应用通过重复操作收到内存不足警告并最终崩溃。当我在仪器中进行分析时,崩溃时我只看到 5.7 MB 的活动字节。(崩溃没有显示回溯,没有错误等。它只是终止,这表明内存崩溃。)

为什么我的应用程序因内存占用如此低而崩溃?我一直在 iPad 1 上测试 iOS 5.1。

仪器截图

编辑:
我能够修复崩溃。UIImages这是由于对具有 3作为属性的对象进行了额外的保留调用。这些对象的累积导致内存警告和崩溃。

但是,问题仍然存在:为什么 Instruments 显示只有 5.7MB 的活动字节?这可能是由于UIImage's自动缓存吗?

4

2 回答 2

0

我在您发布的代码中看不到任何明显的泄漏,但如果您只是想重绘图像(可能是为了强制立即解压缩),那么这是一种非常复杂的方法。只需这样做:

- (void)loadImage:(UIImage *)image
{
    UIGraphicsBeginImageContextWithOptions(image.size, image.scale);
    [image drawAtPoint:CGPointZero];
    self.someImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
}

希望这将解决您所看到的任何泄漏。

于 2013-11-07T14:03:39.407 回答
0

Have you set NSZombieEnabled to YES in the environment variables?

When zombies are enabled memory is never really freed but retained in a zombie pool for debugging references to invalid pointers.

于 2014-04-07T16:01:02.373 回答