SDWebImage4.0.0 源码解析
在开发 iOS 的客户端应用时,经常需要从服务器下载图片,虽然系统提供了下载工具:NSData、NSURLSession等等方法,但是考虑到图片下载过程中,需要考虑的因素比较多,比如:异步下载、图片缓存、错误处理、编码解码等,以及实际需要中根据不同网络加载不同画质的图片等等需求,因此下载操作不是一个简单的下载动作就可以解决。 针对上述问题,目前常用的开源库就是 SDWebImage ,它很好的解决了图片的异步下载、图片缓存、错误处理等问题,得到了广泛的应用,使得设置 UIImageView 、 UIButton 对象的图片十分方便。本文就从源码的角度,剖析一下这款优秀的开源库的具体实现。 类结构图 SDWebImage 的源码的类结构图和下载流程图在官方的 说明文档 里有介绍,通过 UML 类结构图详细的介绍了该框架的内部结构,以及通过流程图介绍了具体的下载过程。 下图是我总结的 SDWebImage 的结构图,简单的把 SDWebImage 源码文件按照功能进行了划分,方便在阅读源码时,能快速的对源码有一个总体的认识,加快阅读效率。 ![](//upload-images.jianshu.io/upload_images/1843940-c51585b28704fae9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)