8

因此 NSCache 对象应该保持活动状态以保留缓存的数据,这意味着必须使用用于存储数据的同一对象来检索数据。

  • 所以问题是在保存我的数据的单例 NSDictionary 上使用 NSCache 有什么意义?
  • 使用 NSCache 的首选方式是什么?静态场?继承它并创建一个单例?
4

1 回答 1

24

缓存有许多怪癖,使其可以很好地用作缓存,但不适合用作通用集合。如文档中所述:

NSCache 对象在以下几个方面与其他可变集合不同:

  • NSCache 类包含各种自动删除策略,确保它不会使用过多的系统内存。如果其他应用程序需要内存,系统会自动执行这些策略。调用时,这些策略会从缓存中删除一些项目,从而最大限度地减少其内存占用。
  • 您可以从不同的线程添加、删除和查询缓存中的项目,而无需自己锁定缓存。
  • 从 NSCache 对象中检索某些内容会返回一个自动释放的结果。
  • 与 NSMutableDictionary 对象不同,缓存不会复制放入其中的关键对象。

这些特性对于 NSCache 类是必需的,因为如果调用缓存来释放内存,缓存可能会决定在后台异步自动变异。

于 2012-05-08T16:57:46.120 回答