iOS缓存处理类 NSCache

NSCache
  • 用来进行缓存处理,类似NSdictionary的使用
  • 在收到内存警告时会主动调用removeAllObject
  • 线程安全,在多线程操作中,不需要对NSCache加锁
  • NSCache的key是对对象进行Strong引用,
存储数据
 //  NSCache 缓存处理类
    NSCache *cache = [[NSCache alloc] init];
    
    //存储数据
    NSData *data = [NSData dataWithContentsOfFile:@"images/110.png"];
    
    [cache setObject:data forKey:@"data_key"];
    
  • 成本储存
    • 需要设置 总成本数
 NSCache *cache = [[NSCache alloc] init];
    
   
    //总成本数,如果发现储存数据大于5,那么会自动回收之前的对象
    cache.totalCostLimit = 5;
    
    for (int i = 0; i < 10; i ++) {
        //存储数据
        NSString *str = [NSString stringWithFormat:@"%d",i];
        NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
        [cache setObject:data forKey:@(i) cost:1];
        
        NSLog(@"%d",i);
    }
   // 设置的总成本是5,当在存储数据时,大于5,就会对前面的存储数据回收,当存储6时,就会回收之前存储的数据1
    NSLog(@"===========");
    
    for (int i = 0; i < 10; i ++) {
        NSData *data = [cache objectForKey:@(i)];
        if (data) {
             NSLog(@"%@ -- c取出-%d",[cache objectForKey:@(i)],i);
        }
   
    }


//打印结果 下图

在这里插入图片描述

获取数据 ?的数据
//获取数据
    [cache objectForKey:@"data_key"];
删除数据
//删除所有的数据
[cache removeAllObjects];

//删除对应key的数据
 [cache removeObjectForKey:@"data_key"];
代理

- (void)setup {
    NSCache *cache = [[NSCache alloc] init];
    cache.delegate = self;
}

//对象回收的时候调用这个方法
- (void)cache:(NSCache *)cache willEvictObject:(id)obj {
    
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值