SDWebImage是一个加载网络图片的三方库,实现思路如下
1.缓存类,该类继承NSObject类,缓存类型有内存缓存,磁盘缓存。内存缓存采用的系统的NSCache类,该类可以设置缓存成本,缓存总大小,缓存对象最大成本。如果超过了缓存总大小,系统会发送内存警告,这时候该库会移除所有的缓存。与之相对应的磁盘缓存最长时间为一周,当清理缓存时会把超过一周的图片清理掉。最后对于读写,该库采用了一个串行队列,对磁盘进行操作,这样避免了多个线程同时访问资源。图片存储到磁盘时以url md5后作为文件名。
2.下载图片类:该类继承NSObject类,采用系统session会话任务发送网络请求,并采用NSOperationQueue加载异步任务,这儿也就是在异步任务中开启了一个异步网络请求任务。
3.UI类 通过类别对系统UI增加方法
4.管理类,该类管理缓存类,下载图片类,UI类。至于具体细节要仔细阅读源码 整个框架就这样