【问题标题】:How to solve this deprecation issue "abs is deprecated: Please use the `abs(_)` free function"如何解决此弃用问题“abs is deprecated: Please use the `abs(_)` free function”
【发布时间】:2017-04-26 15:54:09
【问题描述】:

我有一个导入 Foundation 和 CoreGraphics 的 Swift 文件,但在我调用 abs(x) 的地方,其中 xCGFloat,我收到以下警告:

abs 已弃用:请使用abs(_) 免费功能

我应该使用什么功能?

谢谢

【问题讨论】:

  • 你在哪里打电话给abs(x)?请提供minimal reproducible example。听起来您正在调用CGFloat 的静态abs 方法而不是顶级abs 函数。您是否有机会在 CGFloat 扩展的静态范围内调用它?
  • 在 xcode 8.2 中没有给出警告 let a: Double = 10.03 let value = abs(a)
  • 你使用的是什么版本的 Xcode?​​span>
  • @Hamish 看看 api 更改 developer.apple.com/reference/swift/double/… 。我猜这是 xcode 8.0-8.1 中的一个错误
  • @Hamish 是的,这正是我正在做的,在扩展 CGFloat 的静态函数中调用它!

标签: swift core-graphics deprecated


【解决方案1】:

这似乎是a compiler bug,如果您在static 上下文中使用abs(x)

根据 cmets,您可以使用以下方法解决警告:

Swift.abs(x)

【讨论】:

  • 我不会真的认为这是一个错误 - 我希望在具有静态方法 abs(_:) 的类型的静态上下文中调用 abs(_:)默认解析为 that 方法,而不是顶级abs(_:)。但是,是的,在这种情况下使用Swift. 是消除歧义的正确方法:)
  • @Hamish 同意。我想多写一些,但不确定这个案子应该如何处理。虽然它是作为一个开放的错误提交的。
猜你喜欢
  • 2021-03-24
  • 2019-09-29
  • 1970-01-01
  • 2017-04-09
  • 2012-07-05
  • 2019-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多