将 NSIntegers(或 int)与 NSUInteger(或 unsigned int)进行比较
Posted
技术标签:
【中文标题】将 NSIntegers(或 int)与 NSUInteger(或 unsigned int)进行比较【英文标题】:Comparing NSIntegers (or int) to NSUInteger (or unsigned int) 【发布时间】:2015-02-28 04:51:50 【问题描述】:我有一个相当大的应用程序(objective-c),我决定打开“符号比较”警告。我现在有将近 100 个。大部分都是这样的:
if (recentSearches.count > indexPath.row)
//something
并且错误与此类似:
Comparison of integers of different signs: 'NSUInteger' (aka 'unsigned int') and 'NSInteger' (aka 'int')
关于如何解决所有问题,有哪些好的策略或技巧? 谢谢
【问题讨论】:
【参考方案1】:真的,您想继续更改声明,以便在比较时类型匹配。例如,count
变量应该是无符号的。这是目前最安全的。如果您正在回收一个变量,以便将其与其他可能有符号或无符号的事物进行比较,请更改它!
仅当您明确验证这样做是安全的时才进行类型转换。例如,如果有符号整数 > 0,则可以将其强制转换为无符号整数。除非您处理 unsigned int 可以容纳的对于有符号 int 来说太大的值范围,否则另一个方向是不安全的!
【讨论】:
以上是关于将 NSIntegers(或 int)与 NSUInteger(或 unsigned int)进行比较的主要内容,如果未能解决你的问题,请参考以下文章
NSUInteger 未在 TestFlight 上正确显示
Scala 库将数字(Int、Long、Double)与 Array[Byte] 相互转换