最近都在研究SDWebImage,也想看看实现,在这边就总结一下关于调用sd_setImageWithURL过程,我觉得在github上面的官网的时序图是要看的,虽然过程有所简化,但其实还是有学习的地方。
下面就用代码图片来描述这整个过程
已经进入到了UIView的分类中了
之后就是先去查缓存
再进入queryCacheOperationForKey方法中进行查询
然后在load方法里面调用了SDWebImageDownloader类中的downloadImageWithURL方法
之后就是设置一些属性,然后返回operation
最后返回的是SDWebImageDownloadToken类型
然后之后如果下载好的再去返回downloadImage。
最后再提一下是什么时候下载的
是在SDWebImagDownloader中的downloadImageWithURL方法中
然后进入下面的函数中
- (nullable SDWebImageDownloadToken *)addProgressCallback:(SDWebImageDownloaderProgressBlock)progressBlock
completedBlock:(SDWebImageDownloaderCompletedBlock)completedBlock
forURL:(nullable NSURL *)url
createCallback:(SDWebImageDownloaderOperation *(^)(void))createCallback {
将operation添加进队列中,就会去自动的执行start方法
而我们自定义的SDWebImageDownloadOperation的下载方法就是在start方法中调用的