因此 NSCache 对象应该保持活动状态以保留缓存的数据,这意味着必须使用用于存储数据的同一对象来检索数据。
- 所以问题是在保存我的数据的单例 NSDictionary 上使用 NSCache 有什么意义?
- 使用 NSCache 的首选方式是什么?静态场?继承它并创建一个单例?
因此 NSCache 对象应该保持活动状态以保留缓存的数据,这意味着必须使用用于存储数据的同一对象来检索数据。
缓存有许多怪癖,使其可以很好地用作缓存,但不适合用作通用集合。如文档中所述:
NSCache 对象在以下几个方面与其他可变集合不同:
- NSCache 类包含各种自动删除策略,确保它不会使用过多的系统内存。如果其他应用程序需要内存,系统会自动执行这些策略。调用时,这些策略会从缓存中删除一些项目,从而最大限度地减少其内存占用。
- 您可以从不同的线程添加、删除和查询缓存中的项目,而无需自己锁定缓存。
- 从 NSCache 对象中检索某些内容会返回一个自动释放的结果。
- 与 NSMutableDictionary 对象不同,缓存不会复制放入其中的关键对象。
这些特性对于 NSCache 类是必需的,因为如果调用缓存来释放内存,缓存可能会决定在后台异步自动变异。