何时使用NSMutableDictionary而不是NSMapTable?

时间:2014-05-07 18:31:31

标签: objective-c nsmutabledictionary foundation

NSMapTable似乎是一个更强大,更灵活的NSMutableDictionary表兄弟。它可以配置为在NSMutableDictionary中工作(复制键并保持强引用值)在什么情况下我不应该使用NSMapTable?

2 个答案:

答案 0 :(得分:0)

我希望在99%的案例中NSDictionary(和NSSet)。更多的抽象意味着更大的复杂性和更多的错误方法。

我只会在一种情况下使用NSMapTable(和NSHashTable)来存储弱引用。 我看不出任何其他有用的东西。

答案 1 :(得分:0)

请注意,如果使用弱弱,弱强或弱弱绑定,NSMapTable有时不会释放键和对象{。{3}}。

同样在NSMapTable.h中,你可以发现,当弱密钥被回收时,'条目不一定就被清除了

+ (id)weakToStrongObjectsMapTable NS_AVAILABLE(10_8, 6_0); 
// entries are not necessarily purged right away when the weak key is reclaimed
+ (id)weakToWeakObjectsMapTable NS_AVAILABLE(10_8, 6_0); 
// entries are not necessarily purged right away when the weak key or object is reclaimed