【发布时间】:2014-07-29 22:04:00
【问题描述】:
假设我在 Swift 中有以下类(存在明显问题)
class MyClass {
let myProperty: String
init() {
super.init()
self.setupMyProperty()
}
func setupMyProperty() {
myProperty = "x"
}
}
这过于简化了,但我基本上试图将myProperty 的初始化委托给setupMyProperty() 方法。这是我经常用来分解类设置的不同部分的模式。
但是,当然,在超级初始化程序运行之前我不能调用self,并且在设置所有属性之前我不能运行超级初始化程序,所以我遇到了问题 22。其中因为setupMyProperty() 不被视为初始化程序,所以无论如何它都无法分配myProperty。
谁能告诉我如何在 Swift 中实现这个模式?
【问题讨论】:
-
我不知道这是否适合您,但您可以在声明属性时指定一个值。
let myProperty: String = "x" -
是的,我在有意义的地方使用它。但是如果这些东西是基于给定初始化器的参数初始化的,初始化器就会变得混乱。我想这表明我的班级有太多的属性。
-
查看 WWDC 会话 403:中级 Swift,涵盖类初始化约 29 分钟。
标签: swift