SDWebImage内部实现及其原理

SDWebImage是一个强大的图片管理框架,它支持网络图片的下载和缓存。本文详细介绍了SDWebImage的概述、使用方法、实现原理,包括内存和磁盘缓存的管理、下载器和缓存的交互、图片加载流程,以及在实际开发中遇到的问题和解决方案。此外,还讨论了SDWebImage中的关键宏定义和关联对象的使用。
摘要由CSDN通过智能技术生成

SDWebImage的知名度就不用说了,简单介绍一下,它是一个图片框架,支持从网络中下载且缓存图片,并设置图片到对应的UIImageView 控件或者 UIButton 控件。使用SDWebImage来管理图片加载,会极大地提高我们的开发效率,从而让我们更加专注于业务逻辑实现。也正是因为这样,让我们很多开发都只会用SDWebImage,而忽略了它的内部实现,今天我就给大家介绍一下SDWebImage的内部实现及原理。

一、SDWebImage 概述
SDWebImage是一个开源的第三方库,它提供了UIImageView的一个分类,以支持从远程服务器下载并缓存图片的功能。它具有以下功能:
1、提供了一个UIImageView的 category用来加载网络图片,并对网络图片的缓存进行管理。
2、采用异步方式来下载网络图片
3、采用异步方式,使用 memory+disk 来缓存网络图片,自动管理缓存。
4、支持 GIF 动画
5、支持 WebP 格式
6、同一个 URL 的网络图片不会被重复下载
7、失效的 URL 不会被无限重试
8、耗时操作都在子线程,确保不会阻塞主线程
9、使用 GCD 和 ARC
10、支持 Arm64

二、SDWebImage 使用
1、使用 ImageView+WebCache category 来加载 网络图片

 

UIImageView调用方法.png

 

2.、使用Blocks,在 block 中得到图片下载进度和图片加载完成(下载完成或者读取缓存)的回调,如果你在图片加载完成前取消了请求操作,就不会收到成功或失败的回调

 

Block方式给UIImageView设置图片.png


3、使用SDWebImageManager,SDWebImageManager为UIImageView+WebCache category的实现提供下载图片接口。

SDWebImageManager下载图片.png


4、单独使用 SDWebImageDownloader 来下载图片,但是图片内容不会缓存。

SDWebImageDownloader下载图片.png

 

5、使用 SDImageCache 异步缓存图片
SDImageCache 同时缓存到内存和磁盘中。

 

图片存入内存和磁盘.png


SDImageCache 只缓存到内存:

图片只存入内存.png


读取缓存时可以使用 queryDiskCacheForKey:done: 方法,图片缓存的 key 是唯一的,通常就是图片的 absolute URL。

读取缓存.png


6、清除缓存文件

清楚缓存文件.png


7、获取所有缓存图片的总大小

获取缓存图片总大小.png


8、获取缓存图片张数

获取缓存图片张数.png

9、直接从缓存中提取图片

从缓存提取图片.png


10、直接删除缓存中得图片

删除缓存中的图片.png


11、判断本地缓存中是否存在网络中的图片

是否存在网络图片.png

在实际的运用中,我们并不直接使用SDWebImageDownloader类及SDImageCache类来执行图片的下载及缓存。为了方便

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值