主业iOS/PHP,副业啥都玩,QQ:705719110,欢迎来撩!

SDWebImage的原理及简单实现

iOS开发 随风 88℃ 0评论

多线程我们一般用在哪里呢?之前都已经说过了,使用多线程是为了防止做大运算量的操作阻塞了主线程,使我们的程序出现卡顿的现象,我们可以把大的运算放在新开的线程里,当然其实我们开发中主要用到的是加载大量的网络数据的时候,比如我们下载一个图片,那数据量肯定比文本多的多啊,那不就会有卡顿现象,那就开一个线程来下载,加载完在主线程里刷新UI,还可以做一下缓存,更省流量。
就拿我们开发中常用的三方库 SDWebImage 来说吧,下面先看一下它的逻辑。

webImage原理

当拿到一个URI的时候先通过URI在系统的内存中查找这张图,如果找不到就去手机的缓存中去查找,如果还找不到那就说明我们本地没有这个图片,就去网上下载。
我们这里来简单实现一下这个逻辑

下面我们通过一个UIImageView的扩展类来做这些操作,这样更方便我们的使用

我们可以看到实现起来其实很简单,下面我们来调用一下

第一次运行结果:

jieguo1

第二次运行结果:

jieguo2

我们第一次运行的时候缓存了,当第二次运行就不再请求网络图片了

代码地址 : https://git.oschina.net/zcb1603999/iOSTools

转载请注明:怼码人生 » SDWebImage的原理及简单实现

喜欢 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址