如何解决这个弃用问题“abs已弃用:请使用`abs(_)`免费功能”

问题描述:

我有一个Swift文件,我导入Foundation和CoreGraphics,但在我拨打abs(x)的地方,其中x是一个CGFloat,我得到这样的警告:如何解决这个弃用问题“abs已弃用:请使用`abs(_)`免费功能”

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

我应该使用什么功能?

谢谢

+1

正是你在哪里调用'ABS(X)'?请提供[mcve]。听起来像你在调用'CGFloat'的静态'abs'方法,而不是*'abs'函数。你是否在任何时候在'CGFloat'扩展中的静态作用域中调用它? – Hamish

+0

xcode 8.2没有给出警告 let a:Double = 10.03 let value = abs(a) – Sahil

+0

你使用的是哪个版本的Xcode? – Sahil

这似乎是a compiler bug,如果你是在一个static环境中使用abs(x)

根据您可以使用解决警告的评论:

Swift.abs(x) 
+3

我不会*真的认为它是一个错误 - 我希望在静态方法中调用'abs(_ :)'在静态方法'abs(_ :)'的类型上默认解析为* that *方法,而不是*的'abs(_ :)'。但是,是的,使用'Swift.'是在这种情况下消除歧义的正确方法:) – Hamish

+0

@Hamish同意。我想写更多,但并不确定这个案子应该如何处理。尽管它是作为一个开放的错误提交的。 – shallowThought