iPhone应用程序内存泄漏在NSMutableArray中使用UIIMAGE



我有一个包含图像的nsmutablearray。然后,我有一个图像视图,显示来自该数组的图像。但是,每次加载图像视图时,我都会收到很大的内存泄漏。我不确定如何纠正。我在Xcode 5.0.2中使用弧。

_image1 = [UIImage imageNamed:@"FirstImage.png"];
imagearray = [[NSMutableArray alloc] init];
[imagearray addObject:_image1];
_imageview1 setImage:[imagearray objectAtIndex:0]];

内存泄漏问题可能是由于uiimage没有零。为此,您必须使用Alloc初始化UIIMAGE,然后将其添加到数组后,将其零。您可以防止以这种方式泄漏内存:

UIImage *image1 =[[UIImage alloc]initWithContentsOfFile:[[NSBundle mainBundle]pathForResource:@"FirstImage" ofType:@"png"]];
[imagearray addObject:image1];
_imageview1 setImage:[imagearray objectAtIndex:0]];
image1 =nil;

,如果它可以使用,请让我知道。谢谢:)

来自Apple Doc: (uiimage)成像:方法在系统缓存中查看带有指定名称的图像对象,并在对象存在的情况下返回该对象。 如果匹配的图像对象尚未在缓存中,则此方法 从指定文件加载图像数据,将其加载,然后加载 返回结果对象。

如果您的图像文件只会显示一次,并希望 确保不会将其添加到系统的缓存中,您应该 而是使用ImageWithContentsOffile创建图像:。这会 将您的一次性图像放在系统图像缓存之外,可能 改善应用程序的内存使用特性。

因此,作为一个建议,如果您替换成像:使用ImageWithContentsOffile:为了避免缓存,您的内存足迹应改进

最新更新