SDWebImage库的理解(2)

来源:互联网 发布:杭州编程培训 编辑:程序博客网 时间:2024/06/02 02:48

SDWebImage库的作用:
通过对于UIImageView的类别扩展来实现异步加载更换图片的工作。

主要用到的对于象:
1、UIImageView (WebCache)类别,入口封装,实现读取图片完成后的回调
二、SDWebImageManager,对于图片进行解决的中转站,记录那些图片正在读取。
向下层读取Cache(挪用SDImageCache),可能向网络读取对于象(挪用SDWebImageDownloader) 。
实现SDImageCache和SDWebImageDownloader的回调。
3、SDImageCache,按照URL的MD5摘要对于图片进行存储和读取(实现存在内存中可能存在硬盘上两种实现)
实现图片和内存清理工作。
4、SDWebImageDownloader,按照URL向网络读取数据(实现部分读取和全部读取后再关照回调两种方法)

其他类:
SDWebImageDecoder,异步对于图像进行了一次解压
目前不明利剑为什么要做这么道工序。(现在清楚了,功效评释见下文)

风趣的点:
1、SDImageCache是怎么做数据解决的?
SDImageCache分两个部分,一个是内存层面的,一个是硬盘层面的。
内存层面的相当是个缓存器,以Key-Value的形式存储图片。当内存不足的时候会清除了所有缓存图片。
用搜索文件系统的方法做解决,文件更换方法是以时间为单位,剔除了时间年夜于一周的图片文件。
当SDWebImageManager向SDImageCache要资源时,先搜索内存层面的数据,如果有直接返回,没有的话去拜候磁盘,将图片从磁盘读取出来,然后做Decoder,将图片对于象放到内存层面做备份,再返回挪用层。

二、为啥必需做Decoder?
通过这个博客:
现在明利剑了,由于UIImage的imageWithData函数是每次画图的时候才将Data解压成ARGB的图像,
所以在每次画图的时候,会有一个解压操纵,这样效用很低,可是只有瞬时的内存需求。
为了提高效用通过SDWebImageDecoder将包装在Data下的资源解压,然后画在其它一张图片上,这样这张新图片就不再必要重复解压了。
这种做法是典范的空间换时间的做法。


原创粉丝点击