我在Swift 4轉換期間遇到了這個問題,並且有一個簡單的測試用例,我不確定它是我的錯誤還是Swift 4中的錯誤。如果我有@objc標識符後「公」的第一個屬性,我得到一個編譯錯誤公開之後第一個@objc導致Swift 4中的錯誤
import Foundation
class ErrorClass: NSObject
{
public
@objc let myVal = 0
let myOtherVal = 1
}
這將導致在@objc標識符「期望的聲明」的錯誤。但是,如果您顛倒這樣的兩個屬性的聲明,一切正常。
import Foundation
class ErrorClass: NSObject
{
public
let myOtherVal = 1
@objc let myVal = 0
}
我可能誤解了公衆的範圍。在swift中,它是否僅適用於標識符之後的聲明,還是將範圍內的所有內容都包含在C++之後?如果前者,這將解釋我的問題作爲公開之後的換行符將在第二種情況下被忽略,使myOtherVal受到公共標識符的影響。
即時通訊新的Swift,但什麼是「公共」?我相信你之後需要一些減速! – Siyavash
認爲公衆和Let之間存在一條新線。所以@objc應該在公衆面前。 –
是的,感謝您的幫助,這是我對公共範圍如何工作的誤解。 –