将NSIntegers(或int)与NSUInteger(或unsigned int)进行比较

时间:2015-02-28 04:51:51

标签: objective-c nsinteger nsuinteger

我有一个相当大的应用程序(objective-c),我决定打开#34; Sign Comparison"警告。我现在差不多有100个。他们中的大多数都与此类似:

if (recentSearches.count > indexPath.row) {
    //something
}

,错误与此类似:

Comparison of integers of different signs: 'NSUInteger' (aka 'unsigned int') and 'NSInteger' (aka 'int')

有什么好的策略或提示如何解决这些问题? 感谢

1 个答案:

答案 0 :(得分:0)

实际上,您希望继续更改声明,以便在比较时匹配类型。例如,count变量应该是无符号的。到目前为止,这是最安全的。如果您要回收变量,那么它与其他可能已签名或未签名的内容进行比较,请更改它! 只有当您明确验证它是否安全时才进行类型转换。例如,如果signed int是> 0你可以把它强制转换为unsigned int。另一个方向是不安全的,除非你处理unsigned int可以容纳的值范围,这对于signed int来说太大了!

相关问题