使用UIImage时的内存管理

los*_*sit 3 iphone cocoa-touch memory-management

我的应用程序大量使用UIImage对象根据用户输入和之前设置的图像更改单个UIImageView上的图像.我使用[UIImage imageNamed:]来创建我的UIImage对象.

我想这不是使用UIImage的最佳方式因为我的内存使用量随着时间的推移而不断增加而且从不会下降.(当我使用Object Allocations运行应用程序时已经知道了这一点,而且我没有使用其他NSString变量,只有BOOL和UIImage)

我应该如何有效地使用UIImage和UIImageView对象来保持低内存?

谢谢

rus*_*elf 11

[UIImage imageNamed:] 
Run Code Online (Sandbox Code Playgroud)

将您正在加载的图像缓存到内存中.如果你想一遍又一遍地重复使用同一组图像,这很好,但是如果你经常显示不同的(或大的)图像,那么你应该使用:

NSString *fileLocation = [[NSBundle mainBundle] pathForResource:fileName ofType:extension];
NSData *imageData = [NSData dataWithContentsOfFile:fileLocation];

[UIImage imageWithData:imageData];
Run Code Online (Sandbox Code Playgroud)

代替.