2011-06-15 28 views
9

NSNotFound定義爲NSIntegerMax,其定義爲LONG_MAXNSNotFound,NSInteger,NSUInteger和NSRange.location

NSRange.location定義爲NSUInteger

某些基金會方法返回位置值爲NSNotFoundNSRange

所以,一個經常幹這種事比較:

if (aRange.location == NSNotFound) 

但不是符號和無符號整數之間的比較應該產生一個警告?

回答

12

您正在比較無符號(64位)變量和有符號的常量,它也適合變量的範圍(它不是負數)。所以不需要警告。

當與負值常數或兩側變量進行比較時(即一部分是或可以是負值,而另一部分只是正值或零),警告通常會顯示。

備註:NSNotFound在32位和64位平臺上有所不同,因此不要在任何地方硬編碼或存儲該值。