【发布时间】:2018-08-09 17:14:15
【问题描述】:
在从Swift3 升级到Swift4 时,我遇到了一些与access control 相关的问题。
这里是示例代码。 Swift3 中的那个,过去工作得很好 -
open class MyClass {
private let value: Int
static var defaultValue: Int { return 10 }
public init(value: Int = MyClass.defaultValue) {
self.value = value
}
}
要使代码在Swift4 中运行,我必须将access control 的defaultValue 更改为public。
这里是Swift4,编译版
open class MyClass {
private let value: Int
static public var defaultValue: Int { return 10 }
public init(value: Int = MyClass.defaultValue) {
self.value = value
}
}
当我想知道发生了什么时,我尝试删除 MyClass 的 open 访问控制,它允许我删除 defaultValue 的 access 标识符。甚至可以发到private。
class MyClass {
private let value: Int
private static var defaultValue: Int { return 10 }
public init(value: Int = MyClass.defaultValue) {
self.value = value
}
}
我了解所有访问标识符,但我无法理解这种行为。尤其是第一种情况,xcode 强迫我将defaultValue 的access control 更改为public。
请帮忙。
【问题讨论】:
标签: swift access-control swift4