SDWebImage

作用

1、为Button、ImageView添加分类方法加载图片 2、支持WebP和GIF格式动画 3、使用异步线程加载图片,自动管理缓存(根据URL生成唯一的key来检索缓存)

组织架构
SDWebImage
文章图片
image
SDWebImageManager是单例使用的,分别维护了一个SDImageCache实例和一个SDWebImageDownloader实例。 SDWebImageManager会首先在memory以及disk的cache中查找是否下载过相同的照片,即调用imageCache的方法。 如果在缓存中找到图片,直接调用completedBlock,第一个参数是缓存的image。 如果没有在缓存中找到图片,或者不管是否找到图片,只要operation有SDWebImageRefreshCached标记,那么若SDWebImageManagerDelegate的shouldDownloadImageForURL方法返回true,即允许下载时,都使用 imageDownloader 下载,并将下载好的图片根据Url生成唯一key放到cache中

SDWebImage
文章图片
image
SDWebImageDownloader负责维持图片的下载队列; SDWebImageDownloaderOperation负责真正的图片下载请求; SDImageCache负责图片的缓存; SDWebImageManager是总的管理类,维护了一个SDWebImageDownloader实例和一个SDImageCache实例,是下载与缓存的桥梁; SDWebImageDecoder负责图片的解压缩; SDWebImagePrefetcher负责图片的预取; UIImageView+WebCache和其他的扩展都是与用户直接打交道的。

文件类分析
1、SDImageCache 设置缓存的类型,方式,路径等 2、SDWebImageCompat 兼容类,定义了很多宏和一个转换图片的方法 3、SDWebImageDecoder 解码器,让图片色彩转换(涉及到color space) 4、SDWebImageDownloader 下载器,设置下载相关,要用到SDWebImageDownloaderOperation 5、SDWebImageDownloaderOperation 下载器的操作 6、SDWebImageManager 管理图片下载,取消操作,判断url是否已缓存等 7、SDWebImageOperation 图片操作,后面很多类都要用到 8、SDWebImagePrefetcher 预抓取器,预先下载urls中的图片 9、UIButton+WebCache 按钮图片的缓存 10、UIImage+GIF 缓存gif 11、NSData+ImageContentType 判断图片的类型,png/jpeg/gif/webp 12、UIImage+MultiFormat 缓存多种格式的图片,要用到NSData+ImageContentType的判断图片类型方法和UIImage+GIF的判断是否为gif图片方法,以及ImageIO里面的方法 13、UIImageView+HighlightedWebCache 缓存高亮图片 14、UIImageView+WebCache 主要用到这个,加载及缓存UIImageView的图片 15、UIView+WebCacheOperation 缓存的操作,有缓存,取消操作,移除缓存 SDWebImageDownloader

    推荐阅读