Objective-c-使用NSCache优于静态NSMutableDictionary的好处?

Objective-c-使用NSCache优于静态NSMutableDictionary的好处?,objective-c,ios,nscache,Objective C,Ios,Nscache,因此,NSCache对象应该保持活动状态以保持缓存数据,这意味着用于存储数据的同一对象必须用于检索数据 所以问题是,在保存数据的单一NSDictionary上使用NSCache有什么意义 使用NSCache的首选方式是什么?静电场?继承它并创建一个单例 缓存有许多怪癖,使其能够很好地作为缓存工作,但不适合作为通用集合使用。如文件所述: NSCache对象在以下几个方面与其他可变集合不同: NSCache类包含各种自动删除策略,以确保不会占用太多系统内存。如果其他应用程序需要内存,系统将自动执

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

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

缓存有许多怪癖,使其能够很好地作为缓存工作,但不适合作为通用集合使用。如文件所述:

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

  • NSCache类包含各种自动删除策略,以确保不会占用太多系统内存。如果其他应用程序需要内存,系统将自动执行这些策略。调用时,这些策略会从缓存中删除一些项,从而最小化其内存占用
  • 您可以从不同的线程添加、删除和查询缓存中的项,而无需自己锁定缓存
  • 从NSCache对象检索某些内容将返回自动删除的结果
  • 与NSMutableDictionary对象不同,缓存不会复制放入其中的密钥对象
这些特性对于NSCache类是必需的,因为如果调用缓存来释放内存,缓存可能会决定在后台自动异步地改变自身


测试时要小心。。“AssertEqualObjects”断言不适用于NSCache的两个不同但为空的实例