我在Swift 4转换过程中碰到了这个问题并且有一个简单的测试用例,我不确定这是我的错误还是Swift 4中的错误。如果我有一个@objc标识符作为&#34之后的第一个属性; public",我收到编译错误
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会受到公共标识符的影响。
答案 0 :(得分:1)
它与作为类中的第一个变量无关。 @objc
只需要在访问控制(public
)之前。我不确定你为什么要在前一行上公开;这似乎令人困惑,我以前没见过。
class MyClass {
@objc public let myVar = 0 // compiles
}