UIImageView的细节

加载图片时会使用到的两个方法+ (nullable UIImage *)imageNamed:(NSString *)name;+ (nullable UIImage *)imageWithContentsOfFile:(NSString *)path;
这两个方法该选择哪个呢.下面看一下.


做如下的测试:
1).加载第二个控制器 先加载第一张图片

加载一张图片
加载图片前内存

使用imageWithContentsOfFile加载图片

使用imageNamed加载图片

看起来出不多.但是当返回到第一个控制器时.imageWithContentsOfFile加载的图片内存释放了.而imageNamed没有释放

2). 加载第二个控制器 加载三张相同的图片

同时显示3张相同
使用imageNamed加载3张相同图片

使用imageWithContentsOfFile加载3张相同图片

这时候就可以看出来,两者的占用内存差距来了.

总结:
使用+ (nullable UIImage *)imageNamed:(NSString *)name;方法加载图片时, 当 UIImageView 销毁时, image 并没有跟着销毁,而是在内存中.当下一次加载同一张图片时,直接从内存中加载,当 多个 view同时加载一张 image 时,image 指向同一块内存区域.使用小图,或者使用频率较高的图片时,建议使用此方法.节约内存.

使用+ (nullable UIImage *)imageWithContentsOfFile:(NSString *)path;加载图片时,当销毁UIImageView时, image 紧跟着被销毁,当再次使用时,再次进行加载.当多个 view同时使用一张 image 时, 内存也会跟着增加,指向的不是同一块内存区域.在使用大图,或者使用频率较低的图片时,建议使用此方法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容