NSCache

在学习 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

代码在此处

你可能感兴趣的:(NSCache)