在学习 SDWebImage 三方库的时候,看到图片缓存使用的 NSCache 这个类,查看官方文档,学习了下是如何使用的,现整理笔记如下:
简介:
- NSCache 是苹果公司提供的专门用来做缓存的类
- 使用和 NSMutableDictionary 相似
- 是线程安全的
- 当内存 不足 的时候,会自动清理缓存
- 可以指定缓存的数量/成本
- NSCache 没有提供遍历的方法,只支持用 key 来取值
属性
- totalCostLimit
- 缓存总成本限制
- 已图片为例:一般以图片的像素作为成本,即 图片的 “宽 * 高”,总成本可以限定一个数值,如 10M。只要超过 10M 就自动进行清理了
- 一般而言,设置 totalCostLimit 比 设置 countLimit 更科学一些 - countLimit
- 缓存数量限制 - evictsObjectsWithDiscardedContent
- 是否自动清理缓存
- 默认是 YES
方法
- (nullable ObjectType)objectForKey:(KeyType)key;
- (void)setObject:(ObjectType)obj forKey:(KeyType)key; // 0 cost
- (void)setObject:(ObjectType)obj forKey:(KeyType)key cost:(NSUInteger)g;
- (void)removeObjectForKey:(KeyType)key;
- (void)removeAllObjects
代理方法
- (void)cache:(NSCache *)cache willEvictObject:(id)obj