【问题标题】:IOS/Objective-C/Xcode: implicit conversion loses integer precision error with intIOS/Objective-C/Xcode:隐式转换用int丢失整数精度错误
【发布时间】:2019-02-09 18:43:54
【问题描述】:

当使用 int 计算数组元素时,例如:

 int size = [latestComments count];

我一直在我的应用程序中,我收到编译器警告:

隐式转换丢失整数精度:“NSUInteger”(又名“unsigned long”)到“int”

我从不担心这个问题,因为我认为在处理整数时精度已经足够接近,但我想摆脱警告。要使警告静音,将所有这些更改为:

long size = [latestComments count];

这似乎临时使警告静音,但我想确定,没有更大的后果,我不知道。 (我注意到在消除警告的同时将其更改为 NSInteger 或 NSUInteger 可能会在比较中使用它们时导致下游问题等等。)

【问题讨论】:

    标签: ios objective-c int


    【解决方案1】:

    long 不会解决您的问题。 count 属性返回一个无符号整数 NSUInteger。 要消除错误,您必须声明 NSUInteger size = ..

    它可能会将警告推送到您将使用size 的位置,因为如果类型不再匹配。

    【讨论】:

    • 我经常使用:int i; int 计数 = [myArray 计数];对于 (i=0;i
    • 比较两者应该没有问题。 NSUInteger 永远不会是负数,只要您的原始 int 永远不会是负数,它应该是非常无缝的。
    猜你喜欢
    • 2013-06-05
    • 1970-01-01
    • 1970-01-01
    • 2013-05-30
    • 2013-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-23
    相关资源
    最近更新 更多