iOS源码解读

SDWebImage源码解读

看了UIImageView+WebCache这个分类里面常见[UIImageView sd_setImageWithURL:urplaceholderImage:]方法的内部实现的过程,有所收获.

内部实现流程图.png
  • 首先该方法最终会调用下面方法实现


    主方法.png
  • 进入主方法里面, 如果先前设置UIImageView的下载操作未完成,取消UIImageView先前下载操作, 因为我要给UIImageView设置新的图片 , 完全不用去考虑先前给UIImageView设置了什么图片.


    取消先前的下载操作.png

    取消下载操作的具体实现.png

    -然后创建一个新的图片下载操作,然后设置到UIView的一个自定义字典属性(operationDictionary)中


    创建一个下载任务.png
  • 创建图片下载操作的实现过程是: 根据给定的URL生成一个唯一的Key, 根据key先从内存中读取图片缓存,若没有命中内存缓存则读取磁盘缓存,如果磁盘缓存命中,那么将磁盘缓存读到内存中成为内存缓存。如果都没有命中缓存的话,那么就在执行的doneBlock中开始下载图片。


    queryCacheOperationForKey.png
key获取图片.png

如果内存和磁盘中没有缓存,开启下载


下载.png

你可能感兴趣的:(iOS源码解读)