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