Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 为什么找不到NSNotFound是';t-1但NSIntegerMax_Objective C - Fatal编程技术网

Objective c 为什么找不到NSNotFound是';t-1但NSIntegerMax

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

NSNotFound被定义为NSIntegerMax,它在32位和64位上具有不同的值,这给持久化和分布式环境带来了很多不便。为什么不把它定义为-1呢


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!