其他分享
首页 > 其他分享> > NSCache 缓存

NSCache 缓存

作者:互联网

前言

- (void)setObject:(id)obj forKey:(id)key cost:(NSUInteger)g;

1、NSCache 的使用

// 创建对象
NSCache *cache = [[NSCache alloc] init];

// 设置缓存数量限制,默认值是 0,表示没有限制
cache.countLimit = 10;

// 设置缓存总成本限制,默认值是 0,表示没有限制
cache.totalCostLimit = 1024 * 1024;

// 设置是否自动清理缓存,默认为 YES,表示自动清理
cache.evictsObjectsWithDiscardedContent = YES;

// 设置代理
cache.delegate = self;

// 设置缓存
/*
0 成本,与可变字典不同,缓存对象不会对键名做 copy 操作,只是做强引用
*/
[cache setObject:str forKey:@(i)];

// 设置缓存
/*
指定成本
*/
[cache setObject:str forKey:@(i) cost:1024];

// 查看缓存内容
/*
NSCache 没有提供遍历的方法,只支持用 key 来取值,NSCache 的 Key 只是做强引用,不需要实现 NSCopying 协议
*/
NSString *string = [cache objectForKey:@(i)];

// 删除指定缓存
[cache removeObjectForKey:@8];

// 删除所有缓存
/*
一旦调用了 removeAllObjects,就无法给 cache 添加对象,关于 NSCache 的内存管理,交给他自己就行
*/
[cache removeAllObjects];

// 缓存协议方法
/*
须遵守 <NSCacheDelegate> 协议,obj 就是要被清理的对象
当缓存中的对象被清除的时候,会自动调用,不建议平时开发时重写!仅供调试使用
*/
- (void)cache:(NSCache *)cache willEvictObject:(id)obj {

}

标签:缓存,cache,清理,NSCache,内存,设置
来源: https://www.cnblogs.com/CH520/p/9451958.html