0

我正在-hash一个类上实现该方法,它应该返回一个NSUInteger. 我的实现将与此类似:

- (NSUInteger) hash {
    return CFHash(self->cfObj);
}

现在,CFHash返回 a CFHashCode,它是typedefed unsigned long,但据我所知 anNSUInteger要么是unsigned longOR an unsigned int

如果我unsigned long在应用程序期望一个时返回一个,我会遇到什么样的问题unsigned int

4

1 回答 1

3

你是为什么平台编译的?正如您所指出的, anNSUInteger是 unsigned long 还是 unsigned int 取决于您的体系结构是 32 位还是 64 位。对于 64 位 OS X 应用程序,这显然没问题。

我认为即使在 iOS 或 32 位 OS X 应用程序上你也应该是安全的。文档描述了返回类型CFHash

An integer of type CFHashCode that represents a hashing value for cf.

这不是一个令人信服的理由,但默认实现hash显然使用CFHash反正

于 2012-03-26T11:58:10.887 回答