什么是NSCache?

sum*_*HAY 15 macos cocoa cocoa-touch objective-c ios

有人可以在我需要使用NSCache时向我简单解释一下吗?我阅读了文档而我没有得到它.比如,给我一个NSCache有用的场景示例?谢谢.

Eri*_*lje 20

它或多或少就像一本字典,还有以下附加内容(如文档所述):

NSCache类包含各种自动删除策略,可确保它不会占用太多的系统内存.如果其他应用程序需要内存,系统会自动执行这些策略.调用时,这些策略会从缓存中删除一些项目,从而最大限度地减少其内存占用.

您可以从不同的线程添加,删除和查询缓存中的项目,而无需自己锁定缓存.

从NSCache对象检索内容会返回自动释放的结果.

与NSMutableDictionary对象不同,缓存不会复制放入其中的键对象.

如果您的应用程序有大量需要使用的数据,您可以使用它,但是您无法将其全部保留在内存中.例如,如果您有一个从SQL Lite数据库或Web服务中提取数据的应用程序,则可以在查找后将其存储在NSCache中.然后,当您再次需要它时,您可以先检查缓存,只需要访问数据库(如果它不在缓存中).在这种场景中使用常规字典的主要优点是,如果你在缓存中放入太多东西并且它开始填满内存,它会自动丢弃内容以便为你释放内存.