NSCache小结

来源:互联网 发布:淘宝卖衣服赚钱吗 编辑:程序博客网 时间:2024/06/01 21:52

1、介绍

NSCache 是苹果提供的一个专门用来做缓存的类
使用和 NSMutableDictionary 非常相似.但是是线程安全的
取值

  • (id)objectForKey:(id)key;
    设置对象,0成本

  • (void)setObject:(id)obj forKey:(id)key;
    设置对象并指定成本

  • (void)setObject:(id)obj forKey:(id)key cost:(NSUInteger)g;
    成本示例,以图片为例:

方案一:缓存 100 张图片
方案二:总缓存成本设定为 10M,以图片的 宽 * 高当作成本,图像像素。这样,无论缓存的多少张照片,只要像素值超过 10M,就会自动清理
结论:在缓存图像时,使用成本,比单纯设置数量要科学!
删除某个缓存的内容

  • (void)removeObjectForKey:(id)key;
    删除全部

  • (void)removeAllObjects;
    属性

2、属性

@property NSUInteger totalCostLimit;

缓存总成本
@property NSUInteger countLimit;

缓存总数量
@property BOOL evictsObjectsWithDiscardedContent;

是否自动清理缓存,默认是 YES

3、代理方法

  删除缓存对象的时候,就会调用这个方法  此方法不建议重写,仅在调试时使用,不能写耗时的操作,会严重影响 NSCach的缓存效率

- (void)cache:(NSCache *)cache willEvictObject:(id)obj
{
[NSThread sleepForTimeInterval:1.0];

NSLog(@"remove => %@",obj);

}

4、坑点:

不要在-(void)didRecieveMemoryWarning方法中调用- (void)removeAllObjects方法,否则可能会导致cache失效,无法保存数据;

0 0
原创粉丝点击