UIImageView的细节

作者: 明月钓无痕 | 来源:发表于2016-10-19 15:34 被阅读41次

加载图片时会使用到的两个方法+ (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 时, 内存也会跟着增加,指向的不是同一块内存区域.在使用大图,或者使用频率较低的图片时,建议使用此方法

相关文章

网友评论

    本文标题:UIImageView的细节

    本文链接:https://www.haomeiwen.com/subject/luqvkttx.html