创建NSCache对象
NSCache *cache = [[NSCache alloc] init];
保存数据
[cache setObject:obj forKey:key];
读取数据
id obj = [self.cache objectForKey:key];
删除数据
[cache removeObjectForKey:key];
删除所有数据
[cache removeAllObjects];
设置自动回收
设置最大开销
设置最大消耗的同时,需要在保存数据时设置相应的消耗值。
cache.totalCostLimit = 8
[cache setObject:obj forKey:key cost:1];
设置最大开销为8,每存一条数据的开销为1,所以最大可以存8条数据;当存到第9条时,会先删除第一条(最早存的)数据,再保存新的数据。
设置最大数量
cache.countLimit = 7;
设置最大存储数量为7,则保存到第8条数据时,会先删除第一条(最早存的)数据,再保存新的数据。
监听内存释放过程
让NSCache对象遵循NSCacheDelegate代理,通过代理方法,可以监听超过最大限制时,数据的释放过程。
- (void)cache:(NSCache *)cache willEvictObject:(id)obj {
// 有数据被删除时调用
}