Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 将映像添加到阵列内存问题_Iphone_Memory_Arrays_Nsmutablearray - Fatal编程技术网

Iphone 将映像添加到阵列内存问题

Iphone 将映像添加到阵列内存问题,iphone,memory,arrays,nsmutablearray,Iphone,Memory,Arrays,Nsmutablearray,我目前面临以下问题: 我的应用程序动态创建图像(320 x 480像素)并将其添加到NSMutableArray。我需要那个数组中的那些图像,以便允许用户来回浏览它们。我只需要保留最新的5张图片。所以我写了一个如下的方法: - (void)addImageToArray:(UIImage*)theImage { if ([myMutableArray count] < 5) { [myMutableArray addObject:theImage]; }

我目前面临以下问题:

我的应用程序动态创建图像(320 x 480像素)并将其添加到NSMutableArray。我需要那个数组中的那些图像,以便允许用户来回浏览它们。我只需要保留最新的5张图片。所以我写了一个如下的方法:

- (void)addImageToArray:(UIImage*)theImage {
    if ([myMutableArray count] < 5) {
        [myMutableArray addObject:theImage];
    }
    else {
        [myMutableArray removeObjectAtIndex:0];
        [myMutableArray addObject:theImage];
    }
}
所以,现在我可以这样做:

[self addImageToArray:[self getGL]];

希望,这有帮助。再次感谢。

内存未被释放可能有几个原因

一个是,您正在将所有图像添加到一个循环中,而自动释放池在控件返回到运行循环之前不会释放自动释放的对象。您可能希望每次通过循环创建并释放一个NSAutoreleasePool


另一个原因是对象没有被正确释放。使用“构建和分析”查找任何明显的内存泄漏

好的,发现问题-解决问题:)

实际上,我的getGL方法缺少一些东西:

free(pixels);

这并没有导致任何内存泄漏,而是增加了内存。现在一切都恢复正常。

您是否禁用了NSZombie?问题可能在于您初始化图像的方式。在你的问题中也包括那部分代码。我不记得一开始就启用了它。默认情况下是否打开?@Friendly:否。但请检查“可执行文件信息”中的“参数”选项卡。@Friendly。你的代码看起来不错。崩溃可能与代码中的其他内容有关。
free(pixels);