【多线程-第四天-NSCache Objective-C语言】

一、NSCache

通知

1.NSCache

这个类,SDWebImage在干什么的时候用到这个类了,缓存,cleanMemory,清除内存缓存的时候,用到这个类了,所以这个类的功能是,内存缓存,它提供了一套缓存机制,

我们之前,自己在模拟SDWebImage的时候,我们缓存图片,用的是什么,字典,NSMutableDictionary,这个类在用的时候,和字典用法几乎是一样的,和字典用起来是一样的,但是它是不一样的东西,字典是用来存储数据的,而NSCache是用来缓存数据的,

1)NSMutableDictionary是线程不安全的,而NSCache是线程安全的,

2)当内存不足时,NSMutableDictionary什么都不会做,而NSCache会自动释放内存,因为它会自动释放内存,所以我们存在NSCache里边的对象,我们用的时候,先要去判断是否为空,因为有可能数据已经被清除掉了,

3)用NSCache比用NSMutableDictionary有两个好的地方:

- NSCache可以设置缓存的限额,缓存数量:

@property NSUInteger countLimit;

可以通过两种方式来设置缓存的限额:

一种是设置里边能存几条数据,是设置缓存的数量,

一种是设置缓存的成本,@property NSUInteger totalCostLimit;

通知

缓存成本是设置,NSCache,最大能存多少数据量,比如说,我设置5兆,那NSCache最多只能存5兆的数据,超过5兆之后,会把之前的数据给移除掉,

我设置缓存的数量,最大能存5条,那我放第6条的时候呢,能不能放,能放,但是它会把第一条数据给移除掉,

下边我们来演示一下NSCache,

二、演示NSCache

1.新建一个项目,Name:09-NSCache

通知

我们先往NSCache里边存一些数据,它要缓存数据的话,一般情况下,我们会把它定义成一个属性,

@property(nonatomic,strong)NSCache *cache;

通知

好,我们要用这个属性,首先要去初始化,

通知

- (NSCache *)cache{

if(_cache == nil){

_cache = [[NSCache alloc] init];

}

return _cache;

}

初始化完了,下边要去用它,它能缓存数据,说明我可以往里边去放内容,它可以添加数据,当这个数据不用的时候,我们可以跟字典一样,我们可以移除一条数据,怎么添加,怎么移除呢,它的使用方式,跟字典几乎是一样的,几乎是一样的,但是有一点点差距,

字典在用的时候,可以这么来用,假设它是字典的话,

self.cache[key] = value;

通知

但是,NSCache不能用中括号的方式,它只能用set方法,

通知

往里边去添加一条数据,

如果我要移除一条数据,可以

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

清风清晨

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

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

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

打赏作者

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

抵扣说明:

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

余额充值