加载图片的三种方式:
1.图片在Asset里面,带缓存
UIImage *image = [UIImage imageNamed:imageName];
2.图片在逻辑目录里面,带缓存
UIImage *image = [UIImage imageNamed:imageName];
3.图片在逻辑目录里面,不带缓存
UIImage *image = [UIImage imageWithContentsOfFile:path];
性能分析
主要比较第一次加载图片的性能。测试案例加载了50张150*150的图片,测试机型:iphone5,系统iOS 10.3.3,测试工具,time Profiler。
比较测试结果:
其中,
1.图片在Asset里面,带缓存,总耗时:52ms
UIImage *image = [UIImage imageNamed:imageName];
2.图片在逻辑目录里面,带缓存,总耗时:477ms
UIImage *image = [UIImage imageNamed:imageName];
3.图片在逻辑目录里面,不带缓存,总耗时:99ms
UIImage *image = [UIImage imageWithContentsOfFile:path];
从上面的结果可以看出,使用Asset加载图片的性能最高,并且带有缓存功能。
使用imageNamed加载逻辑目录资源效率太低,但是项目中很难避免开发人员误用,如何找到误用imageNamed加载逻辑目录图片可以参考iOS UIImage 找到性能的拖油瓶