我需要制作一个类似于NSCache的线程安全字典来保存缓存。然而,偶尔我需要刷新缓存的内容。NSCache没有提供遍历其键的方法。这里有什么替代方案?使用带同步的NSMutableDictionary?
NSCache没有这样的API。因此,您应该使用NSMutaleDictionary或NSMapTable实现自己的缓存。主要思想是跟踪添加对象的顺序,并在超过countLimit时删除旧对象。可以使用某些有序结构来按添加顺序存储键,例如NSMutableArray。另外,您应该跟踪内存警告并清理缓存。为了线程安全,您可以使用任何喜欢的锁(@synchronized、NSLock等)。而且您一定要从可变存储的副本中获取keyEnumerator和objectEnumerator。您可以查看具有迭代键和对象功能的线程安全实现:VSCache。
NSCache
除了线程安全之外还有一些其他属性,这些属性不像使用NSMutableDictionary
那么容易复制。 - omz