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

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




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



这时候就可以看出来,两者的占用内存差距来了.
总结:
使用+ (nullable UIImage *)imageNamed:(NSString *)name;
方法加载图片时, 当 UIImageView 销毁时, image 并没有跟着销毁,而是在内存中.当下一次加载同一张图片时,直接从内存中加载,当 多个 view同时加载一张 image 时,image 指向同一块内存区域.使用小图,或者使用频率较高的图片时,建议使用此方法.节约内存.
使用+ (nullable UIImage *)imageWithContentsOfFile:(NSString *)path;
加载图片时,当销毁UIImageView时, image 紧跟着被销毁,当再次使用时,再次进行加载.当多个 view同时使用一张 image 时, 内存也会跟着增加,指向的不是同一块内存区域.在使用大图,或者使用频率较低的图片时,建议使用此方法
网友评论