imageNamed默认加载图片成功后会内存中缓存图片,这个方法用一个指定的名字在系统缓存中查找并返回一个图片对象.如果缓存中没有找到相应的图片对象,则从指定地方加载图片然后缓存对象,并返回这个图片对象.
而imageWithContentsOfFile则仅只加载图片,不缓存.
大量使用imageNamed方式会在不需要缓存的地方额外增加开销CPU的时间来做这件事.当应用程序需要加载一张比较大的图片并且使用一次性,那么其实是没有必要去缓存这个图片的,用imageWithContentsOfFile是最为经济的方式,这样不会因为UIImage元素较多情况下,CPU会被逐个分散在不必要缓存上浪费过多时间.
/*
1.imageNamed :有缓存
20s - 30s 55M
2.imageWithContentsOfFile:没有缓存的(狂点屏幕内存暴涨)
20s - 30s 97M
*/
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
for (int i = 0 ; i<5; i++) {
// self.imageV.image = [UIImageimageNamed:@"1.png"];
self.imageV.image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"1.png"ofType:nil]];
}
}