【发布时间】:2017-09-21 17:06:07
【问题描述】:
我在 Swift 4 转换过程中遇到了这个问题,并且有一个简单的测试用例,我不确定这是我的错误还是 Swift 4 中的错误。如果我有一个 @objc 标识符作为“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
}
我可能误解了 public 的范围。很快,它是否只适用于标识符之后的声明,还是像 C++ 一样作用于它之后的所有内容?如果是前者,这将解释我的问题,因为在第二种情况下,public 之后的换行符将被忽略,从而使 myOtherVal 受到公共标识符的影响。
【问题讨论】:
-
我是 Swift 新手,但什么是“公共”?我确定你需要减速!
-
认为 public 和 let 之间有一个换行符。所以@objc 应该在公众面前。
-
是的,感谢您的帮助,这是我对公共范围如何工作的误解。
标签: swift