iOS官方文档 Foundation篇---NSCache
2019-05-22 本文已影响0人
qianfei
NSCache
一个可变集合,用于临时存储,在资源不足时可能被清除的临时键值对;继承自NSObject;类似于NSMutableDictionary的可变集合;
- NSCache包含内存销毁策略,确保缓存不会使用太多的系统内存。如果其他应用程序需要内存,则这些策略会从缓存中删除一些项目,从而最大限度地减少内存占用;
- NSCache是线程安全的,可以从不同的线程添加,删除和查询缓存中的项目;
- 与对象不同,缓存不会复制放入其中的关键对象。
使用
NSCache *cahce = [[NSCache alloc]init];
// 缓存名称
cahce.name = @"test";
// 缓存保留的最大对象数
cahce.countLimit = 5;
// 缓存在开始销毁对象之前可以保留的最大对象数
cahce.totalCostLimit = 2;
// 是否自动删除可丢弃的内容
cahce.evictsObjectsWithDiscardedContent = YES;
// 设置缓存代理
cahce.delegate = self;
// 添加缓存值
for (NSUInteger i = 0; i < 7; i++) {
NSString *key = [NSString stringWithFormat:@"key%ld",i];
NSString *obj = [NSString stringWithFormat:@"%ld",i];
[cahce setObject:obj forKey:key];
}
// 取值
for (NSUInteger i = 0; i < 7; i++) {
NSString *key = [NSString stringWithFormat:@"key%ld",i];
NSString *obj = [cahce objectForKey:key];
NSLog(@"%@ = %@",key,obj);
/*
key0 = (null)
key1 = (null)
key2 = 2
key3 = 3
key4 = 4
key5 = 5
key6 = 6
*/
}
// 删除指定键的缓存
[cahce removeObjectForKey:@"key0"];
// 删除所有缓存
[cahce removeAllObjects];
// 缓存中的一个对象即将被删除时(代理方法)
- (void)cache:(NSCache *)cache willEvictObject:(id)obj{
}