SDWebImage 中为UIImageView提供了一个分类UIImageView+WebCache.h,这个分类中有一个最常用的接口sd_setImageWithURL:placeholderImage:,会在真实图片出现前会先显示占位图片,当真实图片被加载出来后再替换占位图片。
加载图片的过程大致如下:
1、首先会在 SDWebImageCache 中寻找图片是否有对应的缓存, 它会以url 作为数据的索引先在内存中寻找是否有对应的缓存;
2、如果缓存未找到就会利用通过MD5处理过的key来继续在磁盘中查询对应的数据, 如果找到了, 就会把磁盘中的数据加载到内存中,并将图片显示出来;
3、如果在内存和磁盘缓存中都没有找到,就会向远程服务器发送请求,开始下载图片;
4、下载后的图片会加入缓存中,并写入磁盘中;
5、整个获取图片的过程都是在子线程中执行,获取到图片后回到主线程将图片显示出来。
SDWebImage原理:
调用类别的方法:
1、从内存(字典)中找图片(当这个图片在本次使用程序的过程中已经被加载过),找到直接使用;
2、从沙盒中找(当这个图片在之前使用程序的过程中被加载过),找到使用,缓存到内存中;
3、从网络上获取,使用,缓存到内存,缓存到沙盒。
网友评论