我需要制作一个像NSCache这样的字典,该字典对于保持cahce是线程安全的。但是,有时我需要刷新Cache的内容。 NSCache不提供迭代其键的方法。在这里有什么替代方案? NSMutableDictionary与同步?
最佳答案
NSCache没有这样的API。因此,您应该使用NSMutaleDictionary或NSMapTable实现自己的缓存。主要思想是跟踪添加对象的顺序,如果超过countLimit,则删除较旧的对象。这可以通过使用一些有序的结构来完成,以便按添加的顺序存储 key ,例如NSMutableArray。另外,您应该跟踪内存警告并清理缓存。
为了线程安全,您可以使用任何您喜欢的锁(@ synchronized,NSLock等)。而且,您绝对应该从可变存储的副本中获取keyEnumerator和objectEnumerator。
您可以查看具有遍历键和对象的能力的线程安全实现:VSCache
关于objective-c - 如何遍历NSCache键,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15213261/