NSDictionary allKeys返回NSArray,而不是NSSet

Pet*_*isu 6 cocoa objective-c nsdictionary

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

CRD*_*CRD 1

果然正如大家猜测的那样...

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