如何迭代NSCache密钥

时间:2013-03-04 23:41:15

标签: objective-c nscache

我需要创建一个像NSCache这样的字典,它可以保持线程安全。但是,偶尔,我需要刷新Cache的内容。 NSCache不提供迭代其键的方法。这里有什么选择? NSMutableDictionary与同步?

1 个答案:

答案 0 :(得分:1)

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

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

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