问题描述
|
NSNotFound
定义为NSIntegerMax
,which0定义为LONG_MAX
。
NSRange.location
定义为NSUInteger
。
一些Foundation方法返回位置值为value0ѭ的NSRange
。
因此,经常进行这种比较:
if (aRange.location == NSNotFound)
但是,难道不是有符号整数与无符号整数之间的比较会产生警告吗?
解决方法
您正在将一个无符号(64位)变量与一个有符号常量进行比较,该常量也适合该变量的范围(它不是负数)。因此,无需警告。
当与两侧的负常数或变量进行比较时,通常会出现警告(即,一部分为负或可以为负,而另一部分仅为正或零)。
附带说明:NSNotFound在32位和64位平台上有所不同,因此请勿在任何地方硬编码或存储该值。