一、写在开头
虽然网上有很多关于SDWebImage源码的分析文章,但这些都不是我自己的理解,他们或许能帮助我解决遇到的问题,也可能让我懈怠,不再去深入探究。SDWebImage源码理解中是我对SDWebImage(4.1.2版本)源码的体会理解,它并不拘泥于具体的API,而是从我的角度,去理解SDWebImage的源码设计。
由于本人的技术能力有限,可能会在理解上有一些错误,如果大家发现有问题,欢迎留言,批评指正。
二、SDWebImage概述
在SDWebImage库中,主要的类有SDWebImageDecoder(图片解码)、SDImageCache(图片的缓存处理)、SDWebImageDownloader(图片下载器 )、SDWebImageDownloaderOperation(图片下载操作)和 SDWebImageManager(SDWebImage的管理类)。
SDWebImageManager持有SDWebImageDownloader和SDImageCache单例,负责调度图片的异步下载、缓存和获取;SDWebImageDownloader负责异步图片下载任务的调度,它维持了一个图片下载队列,队列中管理若干SDWebImageDownloaderOperation(NSOperation的子类)下载任务,封装了图片的下载任务,支持并发操作;SDImageCache负责下载图片的缓存和读取;SDWebImageDecoder负责图片的解码工作;
总之,SDWebImage库提供了一整完善的机制,保证网络图片下载和存取。
三、源码文章
文章从图片的解码、缓存、下载三个角度去理解SDWebImage源码。
1、图片的解码
具体文章见 篇1:SDWebImage源码看图片解码
建议:理解了SDWebImage中的图片解码后,可以去看一下其他同类库解码的处理YYImage、FastImageCache和FLAnimatedImage等库对解码的处理(后面有时间也会介绍)。
2、图片的缓存
具体文章见 篇2:SDWebImage源码看图片缓存
建议:在理解了SDWebImage中的图片缓存后,可以看一下YYCache,了解下如何去设计一个高性能的Cache(后面有时间也会介绍)。
3、图片的下载
具体文章见 篇3:SDWebImage源码看图片下载(还在码字中...)
建议:在理解了SDWebImage中的图片下载后,可以看一下AFNetworking,了解下最主流的网络框架库如何设计(后面有时间也会介绍)。
End
- 我是南华coder,曾经梦想写诗走天涯,而今埋头苦思忙coder。