要想成为优秀,要先模仿优秀,书法如此,代码也如此。
我们总可以在阅读优秀源码有所收获,你会发现,原来,代码可以这么写!
接触iOS开发的同学都接触过这个框架。SDWebImage作者精简的接口设计极大的简化了我们开发中有关图片的需求场景。正因为这样,不少开发者对SDWebImage仅仅停留在使用上面,而没有去剖析框架。
我们先来看下SDWebImage架构图:
SDWebImageArchitecture.png
从框架图可以看出主要包括:
- 核心类: SDWebImageManager
- 图片下载:SDWebImageDownloader
- 图片缓存:SdImageCache
- UIKit拓展分类:UIView,UIImageView,UIButton等分类
- 图片编解码类:SDWebImageCodersManager
- 其他辅助类
从功能上来看,各个类的职责都很清晰。
下面来看一下SDWebImage工作的时序图:
SDWebImage_sequence.png
主业务线:UIImageView通过调用UIView:sd_internalSetImageWithURL;然后调用SDWebImageManager:loadImageWithUrl;SDWebImageManager去查询SdImageCache是否有图片,如果有直接返回图片,如果没有调用SDWebImageDownloader下载图片;SDWebImageDownloader下载完图片会调用SDImageCache对图片进行缓存。
具体的细节后面将会在各个模块的专题中解析。
网友评论