NSNotFound
被定义为NSIntegerMax
,其被定义为LONG_MAX
。NSRange.location
被定义为NSUInteger
。
一些Foundation方法返回位置值为NSRange
的NSNotFound
。
因此,经常进行这种比较:
if (aRange.location == NSNotFound)
但是,难道不是有符号整数与无符号整数之间的比较会产生警告吗?
最佳答案
您正在将一个无符号(64位)变量与一个有符号常量进行比较,该常量也适合该变量的范围(它不是负数)。因此,无需警告。
当与两边的负常数或变量进行比较时,通常会出现警告(即,一部分为负或可以为负,而另一部分仅为正或零)。
附带说明:NSNotFound在32位和64位平台上有所不同,因此请勿在任何地方硬编码或存储该值。