OC学习15:SDWebImage探索
简介
SDWebImage
是一个 异步加载图片的库
,提供了一个UIImageView+WebCache
类支持来自互联网的远程图片,具有缓存管理、异步下载、同一个URL次数控制和优化等
特征。
SDWebImage 加载图片的流程
通过
UIImageView+WebCache
类调用sd_setImageWithURL:placeholderImage
调用UIView+WebCache
类中的方法sd_internalSetImageWithURL:placeholderImage:options:context:setImageBlock:progress:completed:
,如果有占位图片,先显示占位图片,然后根据url
处理图片。如果内存缓存中没有图片,则从磁盘中查找,根据对
URL
的MD5
处理查找图片,如果找到图片,将图片添加到内存缓存,同时将找到的图片返回并显示。如果磁盘和内存都找不到图片,则需要下载图片,通过共享或重新生成一个下载器
SDWebImageDownloader
下载图片。图片下载由NSURLSession来完成,下载完成后对图片进行内存和磁盘缓存,并返回显示。
1 | // 下载图片 |
SDWebImageView 缓存机制
- 首先,
SDWebImage
的图片缓存采用的是memory
(内存) 和disk
(磁盘) 双重机制,SDImageCache
中有memoryCache
和diskCache
两个属性;memoryCache
是将图片存储在内存中 ;diskCache
是将图片放到NSCacheDiretory
目录中,具体如下:
Memory
内存中查找:SDImageCache
中查找图片缓存,如果找到直接返回,反之进入硬盘查找Disk
硬盘中查找:如果硬盘中找到,还需要将图片存储到memory
中 ,如果找不到,则下载下载:使用
downloader
下载,失败加入failedURLS
集合,下载拒绝再次加载,下载成功则写入memory
和disk
,并返回显示Disk缓存策略-APP在结束时执行清理任务:
1)清除过期的缓存文件
2)如果清除过期的缓存文件未满足条件,则先清除最早的文件,并且是折半清除。
- Post title:OC学习15:SDWebImage探索
- Post author:张建
- Create time:2021-07-13 10:11:45
- Post link:https://redefine.ohevan.com/2021/07/13/OC/OC学习15:SDWebImage探索/
- Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.