官方文档-NSCache
2017-02-22 本文已影响37人
Liberalism
SDKs
iOS 4.0+
macOS 10.6+
tvOS 4.0+
watchOS 2.0+
NSCache
对象是一个可变的集合,存储键值对,类似于NSDictionary
对象。 NSCache
类提供了一个编程接口,用于添加和删除对象以及基于缓存中对象的总成本和数量设置释放策略。
概览
NSCache
对象在几个方面不同于其他可变集合
-
NSCache
类包含各种自动释放缓存的策略,这些策略确保高速缓存不会占用太多的系统内存。 如果其他应用程序需要内存,这些策略会从高速缓存中删除一些项目,从而最大限度地减少其内存占用。 -
您可以从不同的线程添加,删除和查询缓存中的项目,而无需自己锁定缓存。
-
与
NSMutableDictionary
对象不同,缓存不会复制放入其中的Key
值,无需实现NSCoping
。
通常使用NSCache
对象临时存储具耗时的临时数据的对象。因为它们的值不必重新计算,所以重用这些对象可以提供性能优势。 而且如果内存紧张,则可以被丢弃。 如果被丢弃,它们的值必须在需要时重新计算。
具有可以在不使用时可以丢弃的子组件的对象可以采用NSDiscardableContent
协议来提高缓存驱逐行为。 默认情况下,如果缓存中的NSDiscardableContent
对象被丢弃,则会自动删除它们,但可以更改此自动删除策略。 如果一个NSDiscardableContent
对象被放入缓存,缓存在它被删除时调用discardContentIfPossible
。
属性解读
1.name : 缓存的名称
2.countLimit : 缓存的最大条数
3.totalCostLimit : 缓存最大占用空间
4.evictsObjectsWithDiscardedContent :是否自动丢弃可以释放的数据
5.delegate :代理
方法解读
// 为特定的键值赋值
- setObject:forKey:
// 设置缓存中指定键的值,并将键值对与指定的储存大小相关联。
- setObject:forKey:cost:
// 移除指定缓存
- removeObjectForKey:
// 移除全部缓存
removeAllObjects