0

我有一个相当大的应用程序(objective-c),我决定打开“符号比较”警告。我现在有将近 100 个。其中大部分与此类似:

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

并且错误与此类似:

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

关于如何解决所有这些问题有哪些好的策略或技巧?谢谢

4

1 回答 1

0

确实,您想继续更改声明,以便在比较时类型匹配。例如,count变量应该是无符号的。这是目前最安全的。如果您正在回收一个变量,以便将其与其他可能有符号或无符号的事物进行比较,请更改它!仅当您明确验证这样做是安全的时才进行类型转换。例如,如果有符号整数 > 0,则可以将其强制转换为无符号整数。除非您处理 unsigned int 可以容纳的对于有符号 int 来说太大的值范围,否则另一个方向是不安全的!

于 2015-02-28T05:08:43.930 回答