在setImage上分配了大量内存:

时间:2014-08-29 00:32:25

标签: ios objective-c iphone memory

我有一个以编程方式创建的UIImageView([[UIImageView alloc] init])。在调用setImage:方法之前,应用程序的内存会一直处于检查状态。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

我假设您正在使用以下内容将图像设置为图像视图:

[imgV setImage:[UIImage imageNamed:@"yourImg.png"]]

使用它的问题是应用 缓存 这些图片。如果您想避免缓存图片,请使用imageWithContentsOfFile:

[imgV setImage:[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"yourImg.png" ofType:nil]]];

另外,请务必在使用完毕后将图片设置为nil

[imgV setImage:nil];

过去我遇到过这方面的问题,这里有一些来自Apple的回复TSI的电子邮件中的文字:

  

在很多情况下,您使用的是API UIImage   + imageNamed:加载图像,但你应该知道,即使在返回的UIImage对象之后,imageNamed也会缓存其图像数据   释放。用-imageWithContentsOfFile替换对imageNamed的调用:   如下所述是确保完全控制您的应用程序的方法   内存中的图像数据