NSNotFound:表示一个值未找到或不存在的常量。 NSInteger:表示有符号整数类型的别名,其大小与当前平台的原生长整型相同。 NSUInteger:表示无符号整数类型的别名,其大小与当前平台的原生长整型相同。 NSRange.location:表示一个范围的起始位置。

9

NSNotFound 被定义为 NSIntegerMax,它被定义为 LONG_MAX

NSRange.location 被定义为 NSUInteger

一些 Foundation 方法返回一个其 location 值为 NSNotFoundNSRange

因此,人们经常进行以下比较:

if (aRange.location == NSNotFound) 

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

1个回答

12

您正在将一个无符号(64位)变量与一个带符号的常数进行比较,该常数也适合于变量的范围(它不是负数)。因此不需要警告。

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

附带说明:在32位和64位平台上,NSNotFound是不同的,因此不要硬编码或在任何地方存储该值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接