前言
SDWebImage是一个图片加载库,目前在Github上已有将近14k的star了,这篇文章记录了阅读SDWebImage源码的笔记(Version 3.8),简单的研究了它的实现细节。
流程
SDWebImage加载图片的大致流程,以UIImageView+WebCache为例。
1.调用基础入口方法
sd_setImageWithURL:
,sd_setImageWithURL:placeholderImage:
,sd_setImageWithURL:placeholderImage:options:
等等
2.进入sd_setImageWithURL:placeholderImage:options:progress:completed:
3.进入downloadImageWithURL:options:progress:completed:
4.调用SDWebImageDownloader下载图片downloadImageWithURL:options:progress:completed:
5.调用addProgressCallback:completedBlock:forURL:createCallback:
6.初始化SDWebImageDownloaderOperation
initWithRequest:inSession:options:progress:completed:cancelled:
7.缓存图片调用storeImage:recalculateFromImage:imageData:forKey:toDisk:
以上方法是调用链上的主要方法,将在下文逐一解释。