9

我需要制作一个像 NSCache 这样的字典,它对于保存 cahce 是线程安全的。但是,有时,我需要刷新缓存的内容。NSCache 不提供迭代其键的方法。这里有什么替代方案?NSMutableDictionary 与同步?

4

1 回答 1

2

NSCache 没有这样的 API。因此,您应该使用 NSMutaleDictionary 或 NSMapTable 实现自己的缓存。主要思想是跟踪添加对象的顺序并在超出 countLimit 时删除较旧的对象。这可以使用一些有序结构来按添加顺序存储键,例如 NSMutableArray。此外,您应该跟踪内存警告并清理缓存。

为了线程安全,您可以使用任何您喜欢的锁(@synchronized、NSLock 等)。而且您绝对应该从可变存储的副本中获取 keyEnumerator 和 objectEnumerator 。

您可以查看具有遍历键和对象的能力的线程安全实现:VSCache

于 2018-09-10T12:39:25.417 回答