【问题标题】:implicit conversion loses integer precision 'long' to 'int'隐式转换将整数精度“long”丢失为“int”
【发布时间】:2014-12-19 13:45:16
【问题描述】:

我在 xcode 上解决此问题时遇到问题,不知道为什么会发生它说 隐式转换将整数精度 'long' 丢失为 'int'

[self newScheduleNotification:[ud objectForKey:dateKey] addNotifKey:[sw tag] ];

【问题讨论】:

  • 您知道,如果没有任何有关所涉及数据类型的信息,任何人都无法帮助您。
  • 我们需要更多代码。请添加newScheduleNotification 的方法签名,并告诉我们tag 返回的类型。

标签: objective-c


【解决方案1】:

如果将long 类型的整数值(L 值)分配给int 类型的变量(R 值),则会出现此警告。这包括将long 类型的参数传递给int 类型的参数。可能你在[sw tag] 这样做。

“整数精度丢失”意味着传递值的long 表达式可能具有int 目标无法表示的值。

【讨论】:

    【解决方案2】:

    newScheduleNotification:addNotifKey: 中将notifKey 的类型更改为NSInteger。您正在向它传递一个NSInteger,它是 64 位上的 long,以及 32 位上的 int,但您的方法要求提供 int。在这两个地方使用 NSInteger 将为您处理类型。您必须在 64 位模拟器或设备上。如果您在 32 位 sim 卡或设备上运行,您会看到警告消失,因为您将 int 传递给寻找 int 的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-30
      • 2012-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-02
      • 1970-01-01
      相关资源
      最近更新 更多