SDWebImage
一、简介
iOS中著名的牛逼的网络图片处理框架
包含的功能:图片下载、图片缓存、下载进度监听、gif处理等等
用法极其简单,功能十分强大,大大提高了网络图片的处理效率
国内超过95%的iOS项目都有它的影子
框架地址:https://github.com/rs/SDWebImage
二、演示SDWebImage
导入框架
添加头文件#import "UIImageView+WebCache.h"
设置头像
[cell.iconViewsd_setImageWithURL:url];
三、SDWebImage是如何实现的?
将网络图片的异步加载功能封装在 UIImageView 的分类中。
与 UITableView 完全解耦。
要实现这一目标,需要解决以下问题:
1.给 UIImageView 下载图像的功能。
2.要解决表格滚动时,因为图像下载速度慢造成的图片错行问题,可以在给 UIImageView 设置新的 URL时,取消之前未完成的下载操作。
3.目标锁定:取消正在执行中的操作!(需要自定义操作)
四、SDWebImage相关内容
1、图片文件缓存的时间有多长:1周
_maxCacheAge = kDefaultCacheMaxCacheAge
2、SDWebImage
的内存缓存是用什么实现的?
NSCache
3、SDWebImage 的最大并发数是多少?
maxConcurrentDownloads = 6//是程序固定死了,可以通过属性进行调整!
4、SDWebImage 支持动图吗?GIF
支持
5、SDWebImage缓存图片的名称是怎么确定的!
md5
如果单纯使用文件名保存,重名的几率很高!
使用 MD5 的散列函数!对完整的URL 进行 md5,结果是一个 32 个字符长度的字符串!
6、SDWebImage的内存警告是如何处理的!
利用通知中心观察
UIApplicationDidReceiveMemoryWarningNotification 接收到内存警告的通知
**执行 clearMemory 方法,清理内存缓存!
UIApplicationWillTerminateNotification 接收到应用程序将要终止通知
**执行 cleanDisk 方法,清理磁盘缓存!
UIApplicationDidEnterBackgroundNotification 接收到应用程序进入后台通知
**执行 backgroundCleanDisk 方法,后台清理磁盘!通过以上通知监听,能够保证缓存文件的大小始终在控制范围之内!
**clearDisk 清空磁盘缓存,将所有缓存目录中的文件全部删除!实际工作,将缓存目录直接删除,再次创建一个同名空目录!