SDWebImage Source Probe: WebCache

459 查看

 最近两天,在完成工作业务之余,除了看书,自己也要开始深入的阅读经典的源码。来完善我的 iOS 源码探求 系列文章。

对源码的阅读是一个长久的学习过程,我会将业务中最常用的一些经典三方库拿出来进行学习。这一点我很敬佩 @Draveness 的精神,并向他看齐。

SDWebImage 简单介绍

SDWebImage 根据官方文档,其实就是提供了以下功能:

Asynchronous image downloader with cache support with an UIImageView category.

一个异步下载图片并且带有 UIImageView Category 的缓存库。其好用的原因还在于其简介的接口。话不多说,开始主要内容。本系列文章使用的 SDWebImage 版本为 v3.8.1

多重入口委托构造器

在使用 SD 库的时候,最常调用的方法如下:

由此,对 UIImageView 的图片一部加载完成了。进入到该方法内部,在其 .h 的文件中看到以下接口:

作为 SD 的入口函数,在 sd_setImageWithURL 方法中采用了多种参数灵活搭配的同名方法。而内部实质,都在向最后一个 sd_setImageWithURL 传入参数最多的方法进行调用处理。

在 c++ 0x 中,这种方式被广泛的使用在系统库的 class 中作为类的委托构造器(Delegate Constructor)。这样做的好处是,可以清晰的梳理函数构造逻辑,减轻代码编写量

setImageWithURL 处理流程