SDWebImage 源码解读之管理类SDWebImageManager

本章开始将介绍SDWebImage库中协调核心功能(图片下载,图片缓存)使用的管理单例类SDImageCache,通过对SDWebImage库中底层的关键类(SDWebImageDownloader,SDWebImageDownloaderOperation,SDImageCache)的一步步解读,这时候的SDWebImageManager的解读就容易很多,该类中的主要功能代码如下:

SDWebImage 源码解读之管理类SDWebImageManager_第1张图片
SDWebImage 源码解读之管理类SDWebImageManager_第2张图片
SDWebImage 源码解读之管理类SDWebImageManager_第3张图片
SDWebImage 源码解读之管理类SDWebImageManager_第4张图片
SDWebImage 源码解读之管理类SDWebImageManager_第5张图片

在代码中的开始部分,会对图片的URL进行有效值判断,如果传入的URL类型不是正确的NSURL类型,则不会进行下一步操作,直接将结果回调给上一级,这里使用了@synchronized()指令,在指令中去判断当前的加载路径是否包含在self.failedURLs数组中,在这里创建一个互斥锁,保证此时没有其它线程对self.failedURLs对象进行修改,防止self.failedURLs对象在同一时间内被其它线程访问,起到线程的保护作用。接下来我们可以看到,网络图片的请求与否是依赖于本地跟内存是否存在图片资源为前提的,代码中调用SDImageCache的方法- (NSOperation *)queryDiskCacheForKey:(NSString *)key done:(SDWebImageQueryCompletedBlock)doneBlock 去本地的缓存路径跟内存进行进行查找,判断是否有对应资源加载过,有加载过的直接使用,未加载过的进行网络数据请求,并保存到本地,将结果返回到上一级。

下面以UIImageView对象加载网络图片为例,回顾SDWebImage库整个框架的实现思路路线图:

SDWebImage 源码解读之管理类SDWebImageManager_第6张图片

你可能感兴趣的:(SDWebImage 源码解读之管理类SDWebImageManager)