sdwebimage实现原理--两张图带你看懂

感悟人生,体验生活,享受旅途,热爱编程 感悟人生,体验生活,享受旅途,热爱编程     2022-08-08     437

关键词:

 

SDWebImage底层实现有沙盒缓存机制,主要由三块组成:1、内存图片缓存,2、内存操作缓存,3、磁盘沙盒缓存

SDWebImage GitHub地址 版本4.0.0

 

一、SDWebImage时序图

二、SDWebImage类图

三、SDWebImage原理

1.UIImageView+WebCache: setImageWithURL:placeholderImage:options: 先显示 placeholderImage ,同时由SDWebImageManager 根据 URL 来在本地查找图片 

2.SDWebImageManager: downloadWithURL:delegate:options:userInfo: SDWebImageManager是将UIImageView+WebCache同SDImageCache链接起来的类, SDImageCache: queryDiskCacheForKey:delegate:userInfo:用来从缓存根据CacheKey查找图片是否已经在缓存中 

3.如果内存中已经有图片缓存, SDWebImageManager会回调SDImageCacheDelegate : imageCache:didFindImage:forKey:userInfo: 

4.如果内存中没有图片缓存,那么生成 NSInvocationOperation 添加到队列,从硬盘查找图片是否已被下载缓存。 

5.如果上一操作从硬盘读取到了图片,将图片添加到内存缓存中(如果空闲内存过小,会先清空内存缓存)。SDImageCacheDelegate 回调 imageCache:didFindImage:forKey:userInfo:。进而回调展示图片

6.如果从硬盘缓存目录读取不到图片,说明所有缓存都不存在该图片,需要下载图片,回调 imageCache:didNotFindImageForKey:userInfo: 

7.图片下载由 NSURLSession 来做,实现相关 delegate 来判断图片下载中、下载完成和下载失败 
 
 

21张图带你看懂mysql5.5版本的安装全过程,上手超容易

参考技术A大家都知道MySQL是最流行的关系型数据库管理系统,很具有实用性,对于我们学习很多技术都有帮助,由于我们会经常地使用到它,那么我们就要先学会它的安装,首先我们要在MySQL官网上下载好自己所需要的版本,这... 查看详情

一文带你看懂全志v853开发板原理图(代码片段)

原理图下载*V853芯片集成了A7+E907+1TNPU,具有三核异构的特性以及丰富的音视频接口,同时配置了512MDDR以及8GeMMC,也集成了LED、WiFi、蓝牙、以太网、音频、屏幕、USB、TF卡等模块,为了方便开发者了解板载资源以及快速上手开发... 查看详情

昆明阿玛施眼科教你看懂眼部病变图

 很多有眼部问题的朋友,对眼部发生近视和远视的原理不是很清楚,影响到了自己的自己情况的判断,今天由昆明阿玛施眼科专家教你看懂你自己的眼睛。  查看详情

一个故事教你看懂什么是数字证书,它的原理是什么?它的作用是什么?

原创地址:http://www.cnblogs.com/JeffreySun/archive/2010/06/24/1627247.html1、基础知识     这部分内容主要解释一些概念和术语,最好是先理解这部分内容。1.1、公钥密码体制(public-keycryptography)公钥密码体制分为三个部分,... 查看详情

超强超详细redis入门教程

...化–如何选择RDB和AOF18.聊聊主从–用法19.聊聊主从–同步原理20.聊聊redis的事务处理21.教你看懂redis配置–简介22.教你看懂redis配置-通用23.教你看懂redis配置–快照24.教你看懂redis配置–复制25.教你看懂redis配置–安全26.教你看懂re... 查看详情

全干货5分钟带你看懂docker!

...可以让你轻松完成持续集成、自动交付、自动部署,并且实现开发环境、测试环境、运维环境三方环境的真正同步。本文从Docker定义,作用,技术架构,安装和使用等全方位带你看懂Docker。Docker是啥?打开翻译君输入Docker结果显... 查看详情

或将引爆第四次工业革命!一张图带你看完人工智能大事件

...在就让我们一起来盘点一下最新的人工智能大事件。一张图带你看完人工智能大事件( 查看详情

十分钟带你看懂比特币的运行原理

...金或任何贵重金属制造的,这就是比特币,那么比特币的原理是什么呢?针对不方便打开视频的小伙伴,CDA字幕组也贴心的整理了文字版本,如下:假设有一种货币目前价值成百上千美元,但不是由金子、铂金或任何贵重金属制... 查看详情

sdwebimage原理和使用

SDWebImage原理和使用SDWebImage作为目前最受欢迎的图片下载第三方框架,使用率非常高.但是你真的会用么?本文接下来将通过例子分析如何合理使用SDWebImage.使用场景:自定义的UITabelViewCell上有图片需要显示,要求网络状态为WiFi时,显示... 查看详情

一文看懂composenavigation实现原理(代码片段)

...n也非常值得大家学习,那么本文就带大家深挖一下其实现原理。1.从JetpackNaviga 查看详情

剖析执行时(让你看懂执行时)

执行时机制:比較高级的特性,纯C语言实际上我们平时写的OC代码。都是转成C语言的执行时代码,执行时代码的效率更高,更直接Person.h@interfacePerson:NSObject@property(nonatomic,assign)intage;@endmain.mintmain(intargc,constchar*argv[]){@autoreleasepool{... 查看详情

带你看懂他(代码片段)

数据结构中的堆:(Heap)一、堆的概念:二、堆的操作:1、向下调整(小堆为例)2、向上调整(大堆为例)3、建堆:三、堆的应用:1、堆排序2、TopK3、优先级队列(PriorityQueue)一、堆的... 查看详情

sdwebimage基本用法及原理

最新版SDWebImage的使用 我之前写过一篇博客,介绍缓存处理的三种方式,其中最难,最麻烦,最占内存资源的还是图片缓存,最近做的项目有大量的图片处理,还是采用了SDWebImage来处理,但是发现之前封装好的代码报错了。... 查看详情

如何教你看懂复杂的正则表达式

...则表达式,觉得很难理解,很难看懂。2.此文目的,之前你看不懂,看了此教程后,就基本掌握了,看懂复杂正则表达式的思路。这样就可以通过自己的能力,一点点把复杂的正则表达式,一点点拆分,一点点分析,知道完全理... 查看详情

[转]教你看懂各种神经网络

原图如下:虽然这些节点图不能显示各个模型的内部工作过程,但是这些节点图的汇总可以让我们在同一层面上对比不同神经网络的结构特点,从而对不同神经网络之间的关系有一个更为具象的理解。感知器(Perceptrons)和前馈... 查看详情

一篇文章带你看懂cloudflare信息泄露事件

版权声明:本文由贺嘉   原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/753847001488039974来源:腾云阁 https://www.qcloud.com/community 1.问题描述近期根据HackerNews的报道,以及国际CDN厂... 查看详情

一篇文让你看懂nb-iotloraemtcsigfox及zigbee的应用场景

转自:https://blog.csdn.net/nicholas_dlut/article/details/81051269 查看详情

三个问题带你看懂多核并发框架skynet源码

三个问题带你看懂多核并发框架skynet源码|actor是什么?actor怎么调度?actor跟网络怎么绑定?专注于服务器后台开发,包括C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,Mo 查看详情