我有一个包含图像的NSMutableArray。然后我有一个图像视图,显示该数组的图像。但是,每次加载图像视图时,我都会收到大量内存泄漏。我不知道如何纠正这一点。我在Xcode 5.0.2中使用ARC。
_image1 = [UIImage imageNamed:@"FirstImage.png"];
imagearray = [[NSMutableArray alloc] init];
[imagearray addObject:_image1];
_imageview1 setImage:[imagearray objectAtIndex:0]];
答案 0 :(得分:4)
内存泄漏问题可能是因为UIImage没有变为零。为此,您必须使用alloc初始化UIImage,并在将其添加到数组后,将其设置为nil。您可以通过这种方式防止内存泄漏:
UIImage *image1 =[[UIImage alloc]initWithContentsOfFile:[[NSBundle mainBundle]pathForResource:@"FirstImage" ofType:@"png"]];
[imagearray addObject:image1];
_imageview1 setImage:[imagearray objectAtIndex:0]];
image1 =nil;
如果有效,请告诉我。谢谢:))
答案 1 :(得分:1)
来自apple doc: +(UIImage)imageNamed:方法在系统缓存中查找具有指定名称的图像对象,并返回该对象(如果存在)。 如果匹配的图像对象尚未在缓存中,则此方法 从指定文件加载图像数据,缓存它,然后 返回结果对象。
如果您的图像文件只显示一次并希望显示 确保它不会被添加到系统的缓存中,你应该这样做 而是使用imageWithContentsOfFile创建您的图像:这将 可能会将您的一次性图像保留在系统图像缓存之外 改善应用的内存使用特性。
所以作为一个建议,如果你用imageWithContentsOfFile替换imageNamed:以避免缓存,你的内存占用应该提高