我没想到NSString上的哈希值会根据目标设备的不同而返回.
NSLog(@"%lu", (unsigned long)[@"test" hash]); // 38178019076 on my iPad. // 3818280708 on my iPhone and (iPhone/iPad-)Simulator.
除了应该小心使用NSString上的散列(使用NSString散列很糟糕)这个问题,并且这个问题可以使用真正的散列(例如sha)轻松解决,我感兴趣的是为什么返回不同的结果?
NSObject协议hash
方法返回NSUInteger.NSUInteger是基于设备架构(32或64位)的不同类型.可能是64位设备与32位设备的哈希实现不同(使用额外的空间来制作更准确的哈希值).