iOS SDWebImage 粗谈

SDWebImage 作为一个iOS develop 的图片加载框架之一,为什么它受到那么多iOS developer 的钟爱呢?

SDWebImage 优点:
1、提供了一个UIImageView的Category、UIButton的Category 用来加载网络图片,并且对加载的网络图片的缓存进行管理;
2、采用异步方式来下载网络图片;
3、使用memory + disk来缓存网络图片,自动管理缓存;
4、支持 git 动画 和 WebP 格式;
5、同一个URL 的网络图片不会重复下载;
6、失效的URL 不会无限重试;
7、耗时操作都在子线程中处理,确保不会阻塞主线程;
8、使用GCD

SDWebImage 加载流程
1、判断图片URL 是否为 nil,是则做出错处理并返回;
2、URL MD5加密生成 key;
3、根据 key 读取内存(memory)缓存, 有则拿到图片返回,否则往下;
4、根据 key 读取磁盘(disk)缓存,有则拿到图片返回,否则往下;
5、根据URL 下载图片,下载成功则将图片保存到 内存和磁盘中返回图片

流程1.1.png

注意:
1、在收到内存警告是,SDWebImage SDMemoryCache(继承NSCache) 会清空所有缓存
2、SDWebImage 会监听APP UIApplicationWillTerminateNotification(程序将要被杀死) 和 UIApplicationDidEnterBackgroundNotification(程序进入后台时),收到这两个通知,SDWebImage 会去清除磁盘缓存,同时还会去检查当前磁盘缓存是否大于当前磁盘的最大缓存。如果大于,则会根据我设置删除策略去释放磁盘缓存到最大值的一半,删除策略有两种:①、访问时间:按最久未访问的方式删除磁盘缓存;②、更新时间:根据最久未更新的方式删除磁盘缓存

你可能感兴趣的:(iOS SDWebImage 粗谈)