NSNotFound,NSInteger,NSUInteger和NSRange.location

时间:2011-06-15 15:50:31

标签: cocoa compare

NSNotFound定义为NSIntegerMax,定义为LONG_MAX

NSRange.location被定义为NSUInteger

某些Foundation方法返回NSRange,其位置值为NSNotFound

所以,人们经常进行这种比较:

if (aRange.location == NSNotFound) 

但这不是应该生成警告的有符号和无符号整数之间的比较吗?

1 个答案:

答案 0 :(得分:12)

您正在比较无符号(64位)变量和带符号的常量,它也适合变量的范围(它不是负数)。所以不需要警告。

通常在与两侧的负常数或变量进行比较时出现警告(即一部分是或可能是负数而另一部分只是正数或零)。

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