为什么[NSString的哈希]设备依赖?(Why is [NSString hash] devic

2019-10-19 03:39发布

我没想到在NSString的散列返回不同,具体取决于在目标设备上。

NSLog(@"%lu", (unsigned long)[@"test" hash]);
// 38178019076 on my iPad.
// 3818280708 on my iPhone and (iPhone/iPad-)Simulator.

除此之外,在NSString的哈希应小心(使用的事实哈希是不好用的NSString )。这个问题可以很容易地使用一个真正的散列来解决(如SHA),我很感兴趣,为什么不同的结果返回?

Answer 1:

NSObject协议hash方法返回NSUInteger。 NSUInteger是基于所述设备(32或64位)的结构变化型的。 这可能是散列实现是64个设备对32个设备(使用额外的空间,以做出更准确的哈希值)不同。



文章来源: Why is [NSString hash] device dependent?