2011-06-15 81 views
9

NSNotFound定义为NSIntegerMax,其定义为LONG_MAXNSNotFound,NSInteger,NSUInteger和NSRange.location

NSRange.location定义为NSUInteger

某些基金会方法返回位置值为NSNotFoundNSRange

所以,一个经常干这种事比较:

if (aRange.location == NSNotFound) 

但不是符号和无符号整数之间的比较应该产生一个警告?

回答

12

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

当与负值常数或两侧变量进行比较时(即一部分是或可以是负值,而另一部分只是正值或零),警告通常会显示。

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