1.SDWebImage

https://github.com/draveness/analyze/blob/master/contents/SDWebImage/iOS%20源代码分析%20---%20SDWebImage.md

https://www.jianshu.com/p/728f71b9fe28

大概流程:

  1. 给button imageview等加分类 ->入口函数 ----> uiview分类->真正调用的函数

2.通过runtime给view加属性:url等,operation(继承自nsobject)属性。

  1. 使用manager ---》 使用cacher 查找-> 内存中是否有-> 异步硬盘中是否有。

4.cacher查找内存使用NSCache,线程安全,NSCache在收到内存警告的时候会释放自身的一部分资源。

5.异步硬盘获取使用 串行队列,保证线程安全。 2周过期。 获取data数据,然后解码,然后解压缩,然后给内存缓存。 解压缩使用画布形式。

  1. 没有查到,使用downloaderManger下载。

7.自定义NSOperation封装下载任务,然后使用OperationQueue 最大并发6个。 FIFO,可以通过设置依赖不FIFO。

8.下载后直接解压缩。 然后通过block返回。

9.可以使用Prefetcher来批量下载图片。

10.图片的编码是通过图片二进制数据的文件头来确定格式的。

11.可以将大图修改成小图来显示,提升性能。

12.使用despatch_semepohre来加锁。

13.整个SDWebimage设计的思路是分工合作的思路,将大的任务切分为小任务。

14.解压缩现在使用SDWebimageDecoderManager管理。

15.现在使用NSCache->Maptable来缓存内存。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容