【发布时间】:2015-10-30 11:43:21
【问题描述】:
所以我正在编写一个 Swift 框架,我想只通过 protocol 公开一些对象。
例如:
public protocol Thing : class {
var x : Int { get }
}
我想隐藏我的实现细节,所以我创建了一个internal 类:
internal class ThingImpl : Thing {
public private(set) var x : Int = 0
}
并通过工厂方法出售新的Things:
public func newThing() -> Thing {
return ThingImpl()
}
我无法理解的是为什么编译器会警告我不要在 ThingImpl 内创建 var x public 并鼓励我将其声明为内部。
尽管有警告,但一切正常,如果我留意警告并更改为internal private(set) var x : Int = 0,警告就会消失,一切仍然正常。
在我看来,使 var 公开是正确的做法,因为它在它正在实施的公共协议中是公开的。 我在这里错过了什么吗?谢谢。
【问题讨论】: