SDWebImage作为三方的图片处理框架、不仅可以加载显示图片、而且还是异步的不至于阻塞线程导致页面停滞卡顿、而且它还提供了图片缓存策略。那么、它的底部到底是怎么样的一个实现原理呢?具体来看看吧。
基本代码:[self.imageView sd_setImageWithURL:[NSURL URLWithString:url] placeholderImage:@"1.png"];
我们在使用SDWebImage加载图片进行现实的时候,主要的步骤涉及到:
1.首先加载占位图片 placeholderImage 、如果存在占位图片就先显示占位图片然后再加载实际需要显示的图片、如果没有占位图片就直接去加载实际图片。
2.加载实际图片的时候、先去缓存中查看时候有这个图片、如果有直接拿过来用、要是没有的话再去发送请求获取图片。
关于缓存中的图片:
2.1 先查看内存中有没有、有的话拿来显示、没有的话进行下一步
2.2 生成NSInvocationOperation添加到执行队列开始从硬盘查找图片缓存
2.3 硬盘中如果有、就拿来用、如果没有、就说明要显示的这个图片并没有缓存存在、需要做请求获取
3.通过SDWebImageDownloader进行网络请求、下载图片数据
4.得到图片数据之后通过SDWebImageDecoder做图片解码
5.进行图片展示、同时通过 NSInvocationOperation (避免线程阻塞)将图片缓存到内存和硬盘中
6.当出现内存警告时候、SDImageCache进行早期图片的清理、释放内存空间
另外、SDWebImage在图片加载处理过程中也是可以通过block来显示当前图片请求进度和完成后的操作、以及单独存储图片时候的键值操作等其他功能。
以上就是关于SDWebImage实现原理的一些认知、还是同样的话、尽量用简洁明了的话语来表达事物的信息、希望我的文章能对大家有所帮助、谢谢!