NSDictionary allKeys返回NSArray,而不是NSSet

时间:2013-07-30 19:33:50

标签: objective-c cocoa nsdictionary

我想知道NSDictionary方法allKeys背后的决定是什么,返回一个NSArray而不是NSSet,这会更有意义,因为不能保证返回数组的顺序,而且,一个键是唯一的< / p>

2 个答案:

答案 0 :(得分:1)

除了Justin所说的,如果你真的想要一个字典键列表,你必须得到NSSet,然后将其转换为NSArray。如果你只想测试密钥存在,OTOH,你可以直接反对字典,不需要设置。

答案 1 :(得分:1)

好像每个人都在猜测......

正如OP所说,每一把钥匙都是独一无二的。对于数组或集合大小写,字典代码必须收集密钥 - 其成本适用于两者。在设置的情况下,每个密钥都必须添加到集合中,这涉及到(事实证明是无意义的)成员资格测试,而在数组情况下不需要成员资格测试 - 添加到数组的成本应小于添加到一组。阵列获胜。