Iphone 将映像添加到阵列内存问题
我目前面临以下问题: 我的应用程序动态创建图像(320 x 480像素)并将其添加到NSMutableArray。我需要那个数组中的那些图像,以便允许用户来回浏览它们。我只需要保留最新的5张图片。所以我写了一个如下的方法: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]; }
- (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);