NSCache详解

NSCache---详解

NSCache:

  • NSCache是苹果官方提供的缓存类,在AFNetworking中,使用它来进行图片缓存。

  • NSCache是线程安全的,在多线程操作中,不需要对Cache进行加锁,NSCache的key只是对对象的强引用,对象不需要实现NSCopying协议,NSCache也不会像NSDictionary一样复制对象。


NSCache的用法

  • NSCache在系统发出低内存通知时,会自动删除缓存。
    例如当不断给NSCache填充数据时,应用内存会越来越大,当大小在500M左右时,系统抛出Received memory warning ,此时查看内存,发现内存会减少,因为NSCache在内存警报时,会自动删除缓存。

  • NSCache可以设置数量限制和大小设置,countLimit设置数量限制的, totalCostLimit是设置大小的,不过平时基本不用,而且计算也麻烦。

  • 设置代理


代码

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    
    //系统用来缓存的类
    NSCache * cache = [[NSCache alloc] init];
    
    //totalCostLimit 设置缓存大小
    
    //设置缓存数量,清除的是先缓存的
    cache.countLimit = 5;
    
    cache.delegate = self;
    
    for (NSInteger i = 0; i < 20; i ++) {
        [cache setObject:[NSString stringWithFormat:@"cache - %@",@(i)] forKey:@(i)];
    }
    
    for (NSInteger i = 0; i < 20; i ++) {
        NSLog(@"%@",[cache objectForKey:@(i)]);
    }
    
}

代理

//谁不在缓存中
- (void)cache:(NSCache *)cache willEvictObject:(id)obj {
    
    NSLog(@"%@",obj);
}
原文地址:https://www.cnblogs.com/ldnh/p/5288934.html