Objective c 为什么找不到NSNotFound是';t-1但NSIntegerMax
NSNotFound被定义为NSIntegerMax,它在32位和64位上具有不同的值,这给持久化和分布式环境带来了很多不便。为什么不把它定义为-1呢Objective c 为什么找不到NSNotFound是';t-1但NSIntegerMax,objective-c,Objective C,NSNotFound被定义为NSIntegerMax,它在32位和64位上具有不同的值,这给持久化和分布式环境带来了很多不便。为什么不把它定义为-1呢 PS,在ObjC和可可中,一些指数。。。方法返回NSNotFound,但有些返回-1,这些结果不一致是否有原因。几乎可以肯定,因为返回它的某些函数返回的是无符号值,例如: 此注释可能与以下内容有关: 特别注意事项 在Mac OS X v10.5之前,NSNotFound被定义为0x7fffffff。对于32位系统,这实际上与NSIntegerMa
PS,在ObjC和可可中,一些指数。。。方法返回NSNotFound,但有些返回-1,这些结果不一致是否有原因。几乎可以肯定,因为返回它的某些函数返回的是无符号值,例如: 此注释可能与以下内容有关: 特别注意事项 在Mac OS X v10.5之前,
NSNotFound
被定义为0x7fffffff
。对于32位系统,这实际上与NSIntegerMax
相同。为了支持64位环境,NSNotFound
现在正式定义为NSIntegerMax
。但是,这意味着该值在32位和64位环境中是不同的
答案可能不是这样的,因为它有时以无符号值的形式返回-在Objective-C中,有符号和无符号之间的转换实际上是位拷贝,因此您可以将无符号与-1进行比较,得到您期望的答案(值都是1,1为有符号,最大整数为无符号)。看 那么我们来讨论问题的第二部分,为什么会出现不一致?嗯,多样性是生活的调味品,或者换一种方式说,没有什么像民间那么奇怪——人们只是不一致,没有比这更复杂的了
- (NSUInteger)indexOfObject:(id)anObject
// ^
// Note this!