NSDictionary(字典)是使用 hash表来实现key和value之间的映射和存储的。
hash函数设计的好坏影响着数据的查找访问效率,数据在hash表中分布的越均匀,其访问效率越高。
在Objective-C中,通常都是利用NSString 来作为键值,其内部使用的hash函数也是通过使用 NSString对象作为键值来保证数据的各个节点在hash表中均匀分布。
在调用 setObject: forKey: 后,内部会去调用 key 对象的 hash 方法确定 object 在hash表内的入口位置,然后会调用 isEqual 来确定该值是否已经存在于 NSDictionary中。
摘自cocochina。