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