2017-04-26 57 views
0

我有一個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

回答

2

這似乎是a compiler bug,如果你是在一個static環境中使用abs(x)

根據您可以使用解決警告的評論:

Swift.abs(x) 
+3

我不會*真的認爲它是一個錯誤 - 我希望在靜態方法中調用'abs(_ :)'在靜態方法'abs(_ :)'的類型上默認解析爲* that *方法,而不是頂級的'abs(_ :)'。但是,是的,使用'Swift.'是在這種情況下消除歧義的正確方法:) – Hamish

+0

@Hamish同意。我想寫更多,但並不確定這個案子應該如何處理。儘管它是作爲一個開放的錯誤提交的。 – shallowThought