1

我的 iOS 应用程序需要一个内存中的通用缓存,它支持在达到最大大小时在生存时间和自动清除元素中提供项目。这样的事情存在吗?

NSCache 不起作用,因为它不支持 TTL。

我正在推出自己的产品,但如果我不必这样做,那就太好了。

4

1 回答 1

1

NSCache您可以在一定的限制后利用清除setTotalCostLimit:内存。正如文档所述。

默认值为 0,表示对缓存的大小没有限制。如果将对象添加到缓存中,则可以传入对象的指定成本,例如对象的大小(以字节为单位)。如果将此对象添加到缓存中导致缓存的总成本高于 totalCostLimit,则缓存会自动驱逐其一些对象,直到其总成本低于 totalCostLimit。不保证缓存驱逐对象的顺序。这个限制不是一个严格的限制,如果缓存超过限制,缓存中的对象可能会立即被驱逐,在稍后的时间点,或者可能永远不会,这一切都取决于缓存的实现细节。

如果您还没有,您应该查看Caching and Purgeable Memory文档。

或者,我遇到了一个NSCache用 C++ 编写并支持 TTL 的类。您可以在编写自己的文件时很好地将其用作指南,可以在这里查看

希望这可以帮助 !

于 2012-06-15T14:23:37.837 回答