SDWebImage调用流程

调用流程图
SDWebImage.png

源码阅读顺序:

1 SDWebImageDownloader + SDWebImageDownloaderOperation
2 SDWebImageManager
3 SDImageCache
4 UIImageView+WebCache UIView + WebCache

核心下载类
SDWebImageDownloaderOperation

继承自NSOperation, 使用用NSURLSession+NSURLReqeust负责图片具体下载任务。
提供下载进度回调,任务完成回调。

SDWebImageDownloader

单例管理:
队列:NSOperationQueue,管理下载队列
会话:NSURLSession,所有下载NSURLReqeust共用一个会话
字典:保存key:url value: downloaderOperation 保证,一个url start 到 finish这个过程中。如果在请求了同一个url,不会再开一个线程。

核心存储类
SDImageCache

单例管理
url: key
value: image
存储位置:内存+磁盘。
获取顺序:先内存,再磁盘。

核心管理类

SDWebImageManager
单例管理
1 判断url,是否在黑名单中。 在,直接返回
2 查找:从内存总查找 从磁盘中查找
3 下载SDWebImageDownloader下载
如果同时下载2个相同的url,实际下载一次,因为会被SDWebImageDownloader中有个字典: 保证第一个url 生成一个NSOperation, 第二个url直接去字典中就可以取到。
当下载完成是,url会被从字典中移除。 对于相同的url ,可以重复下载,但是不能同时下.载

UI控件

UIImageView+WebCache.h 实际调用的是 UIView+WebCache.h 中的方法。
UIView+WebCache.h 获取到图片后,判断自己是UIImageView 还是 UIButton,然后直接setImage.

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容