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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容