公开后首先@objc导致Swift 4出错

时间:2017-09-21 17:06:07

标签: swift

我在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会受到公共标识符的影响。

1 个答案:

答案 0 :(得分:1)

它与作为类中的第一个变量无关。 @objc只需要在访问控制(public)之前。我不确定你为什么要在前一行上公开;这似乎令人困惑,我以前没见过。

class MyClass {
    @objc public let myVar = 0 // compiles
}