UIImageView
有animationImages
用于制作动画序列的图像。这很好。但它拥有图像对象。因此,当这个动画发生时,内存的使用会出现峰值。我尝试NSTimer
来设置该图片视图的图片属性,但它不起作用。
我们能用其他任何方法实现这一目标吗?
答案 0 :(得分:0)
不要寻找替代方案,只需尝试纠正现有代码。
为animationImages
分配图片的最佳做法应该是使用initWithContentsOfFile
代替imageNamed:
imageNamed:
它会缓存您的图像,并且您无法控制内存 - 无法保证释放对象实际上会释放图像,但在缓存时会提供更快的图像加载速度
imageWithContentsOfFile:
它不缓存图像并且更加内存友好,但因为它不缓存图像而且较重的图像加载速度要慢得多。
当动画停止时,只需释放图像采集阵列即可。如果您使用ARC,则将图像集合数组设为nil。
最佳实践:
for(int itemIndex = 0; itemIndex < 20; itemIndex++) {
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"myImage1" ofType:@"png"];
UIImage *image = [[UIImage alloc] initWithContentsOfFile:filePath];
[imageArray addObject:image];
}
动画之后:
imageArray = nil;