SDWebImage源码解读
看了UIImageView+WebCache这个分类里面常见[UIImageView sd_setImageWithURL:urplaceholderImage:]方法的内部实现的过程,有所收获.
-
首先该方法最终会调用下面方法实现
-
进入主方法里面, 如果先前设置UIImageView的下载操作未完成,取消UIImageView先前下载操作, 因为我要给UIImageView设置新的图片 , 完全不用去考虑先前给UIImageView设置了什么图片.
-然后创建一个新的图片下载操作,然后设置到UIView的一个自定义字典属性(operationDictionary)中
-
创建图片下载操作的实现过程是: 根据给定的URL生成一个唯一的Key, 根据key先从内存中读取图片缓存,若没有命中内存缓存则读取磁盘缓存,如果磁盘缓存命中,那么将磁盘缓存读到内存中成为内存缓存。如果都没有命中缓存的话,那么就在执行的doneBlock中开始下载图片。
如果内存和磁盘中没有缓存,开启下载