【多线程-第三天-NSOperation的练习-tableView异步下载网络图片-图片缓存池 Objective-C语言】

一、图片缓存池

通知

1.下面我们该解决什么问题了,运行一下试试,

通知

往上拽,图片慢慢儿去下载,下载完成以后,会把这个图片缓存到内存中来,假设你手机内存特别小,我手机内存是1G的内存,开了好多个应用,好,现在内存不够用了,收到内存警告了,我们要干什么,处理内存警告,我们是不是得清理出来一部分内存,清理哪部分内存呢,

哪部分内存不需要用了呢,没有显示的那些图片,这些图片,是不是都在内存中存着呢,这些图片,是不是在消耗着内存呢,图片和文字,相比起来,哪个更占内存,图片,

那文字呢,因为文字占的内存特别小,所以文字的事情,我们就不处理了,好,当我收到内存警告之后,现在,我要把缓存的这些图片,全部从内存中清除掉,现在,怎么做,

// 7 当收到内存警告 ,要清理内存

通知

怎么清理,我们的图片都存在哪儿了,内存,内存中具体什么位置,我们在哪儿把这个图片保存下来的,我们想,代码怎么去写,等会儿我们是不是要处理这个代码,所以你不要想着内存的什么位置呢,我们要处理这个代码,我们要把这个图片从内存中给它干掉,怎么干掉,

图片在哪儿呢,图片在模型中,是不是在这个位置记录下来的,

通知

现在,我要把这个图片都干掉,从内存中干掉,怎么干,

我们就想把这个属性的值,给它设置成空,就完了吧,OK吧,怎么写,

那些模型又在哪儿呢,

通知

这个位置呢,在数组中呢,所以当我收到内存警告之后,我要干什么,不是清空数组,数组不能清空,那些数据,那些文字,我还要的,我不想要的仅仅是图片,所以我要干什么,我要去遍历这个数组,找到数组中的每一个模型对象,把这个模型对象中的image属性,取出来,赋成nil,就完了,OK吧,

这种方式,并不简单,因为我们还得自己写循环,还得自己去处理每一个模型对象,不太方便,怎么办呢,我们把之前缓存图片这个过程,重新写一下,不用以前的方式来写了,为什么不用以前的方式来写了,因为当我们收到内存警告,我想释放内存的时候,不太方便,还要自己写循环,每个对象,设成空,

2.那不用以前的方式,那怎么去处理呢,我们这么来处理,自己来创建一个缓存池,以前的时候,我们tableView,tableView的那些cell不用了,是不是放到缓存池里边来,记得吧,那些cell不用了,就放到缓存池里边来,我们现在要自己创建一个缓存池,创建一个什么缓存池呢,图片的缓存池

// 7 当收到内存警告,要清理内存

// 图片的缓存池

通知

我们把这些图片放到一个池里边来,什么是池,就是一个数组,或

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清风清晨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值