【code_hyy_三方】SDWebImage底层实现原理?

SDWebImage底层实现原理:

其实是有沙盒缓存机制,主要由三块组成

1.内存图⽚缓存
2.内存操作缓存
3.磁盘沙盒缓存

  • 1.UIImageView+WebCache:
setImageWithURL:placeholderImage:options: 先显⽰ 

placeholderImage ,
同时由SDWebImageManager根据URL 来在本地查找图⽚
  • 2.SDWebImageManager:
downloadWithURL:delegate:options:userInfo: SDWebImageManager
是将UIImageView+WebCache同SDImageCache链接起来的类, 
SDImageCache: queryDiskCacheForKey:delegate:userInfo:⽤来从缓存根据CacheKey查找图⽚是否已经在缓存中
  • 3.如果内存中已经有图⽚缓存, SDWebImageManager会回调
SDImageCacheDelegate : imageCache:didFindImage:forKey:userInfo:
  • 4.如果内存中没有图⽚缓存,那么⽣成NSInvocationOperation 添加到队列,从硬盘查找图⽚是否已被下载缓存。

  • 5.如果上⼀操作从硬盘读取到了图⽚,将图⽚添加到内存缓存中(如果空闲内存过⼩,会先清空内存缓存)。

SDImageCacheDelegate 回调 imageCache:didFindImage:forKey:userInfo:。进⽽回调
展⽰图⽚
  • 6.如果从硬盘缓存目录读取不到图⽚,说明所有缓存都不存在该图⽚,需要下载图⽚,
回调imageCache:didNotFindImageForKey:userInfo:
  • 7.图⽚下载由NSURLConnection 来做,实现相关delegate 来判断图⽚下载中、下载完成和下载失败
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容