我需要做一个像NSCache这样的字典,它是线程安全的,用来保存cahce。但是,有时我需要刷新Cache的内容。NSCache不提供遍历其键的方法。这里的替代方案是什么?具有同步功能的NSMutableDictionary?
发布于 2018-09-10 20:39:25
NSCache没有这样的接口。因此,您应该使用NSMutaleDictionary或NSMapTable实现自己的缓存。其主要思想是跟踪添加对象的顺序,并在超过countLimit时删除较旧的对象。这可以使用一些按添加顺序存储关键字的有序结构来完成,例如NSMutableArray。此外,您还应该跟踪内存警告并清理缓存。
为了线程安全,你可以使用任何你喜欢的锁(@synchronized,NSLock等)。而且你绝对应该从可变存储的副本中获取keyEnumerator和objectEnumerator。
您可以查看具有遍历键和对象能力的线程安全实现:VSCache
https://stackoverflow.com/questions/15213261
复制相似问题