我有一个相当大的应用程序(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')
有什么好的策略或提示如何解决这些问题? 感谢
答案 0 :(得分:0)
实际上,您希望继续更改声明,以便在比较时匹配类型。例如,count
变量应该是无符号的。到目前为止,这是最安全的。如果您要回收变量,那么它与其他可能已签名或未签名的内容进行比较,请更改它!
只有当您明确验证它是否安全时才进行类型转换。例如,如果signed int是> 0你可以把它强制转换为unsigned int。另一个方向是不安全的,除非你处理unsigned int可以容纳的值范围,这对于signed int来说太大了!