NSNotFound被定义为NSIntegerMax,其被定义为LONG_MAX

NSRange.location被定义为NSUInteger

一些Foundation方法返回位置值为NSRangeNSNotFound

因此,经常进行这种比较:

if (aRange.location == NSNotFound)


但是,难道不是有符号整数与无符号整数之间的比较会产生警告吗?

最佳答案

您正在将一个无符号(64位)变量与一个有符号常量进行比较,该常量也适合该变量的范围(它不是负数)。因此,无需警告。

当与两边的负常数或变量进行比较时,通常会出现警告(即,一部分为负或可以为负,而另一部分仅为正或零)。

附带说明:NSNotFound在32位和64位平台上有所不同,因此请勿在任何地方硬编码或存储该值。

07-28 06:47