问题
Apple's docs指定:
首次初始化属性时,不会调用willSet和didSet观察程序.仅当属性的值在初始化上下文之外设置时,才会调用它们.
是否可以在初始化期间强制调用这些函数?
为什么?
假设我有一节课
class SomeClass {
var someProperty: AnyObject {
didSet {
doStuff()
}
}
init(someProperty: AnyObject) {
self.someProperty = someProperty
doStuff()
}
func doStuff() {
// do stuff now that someProperty is set
}
}
我创建了方法doStuff
,以使处理调用更简洁,但我更愿意在didSet
函数中处理属性.有没有办法在初始化过程中强制调用它?
更新
我决定删除类的便利初始化器,并强制您在初始化后设置属性.这让我知道永远都会有didSet
人.我还没有决定这是否总体上更好,但它很适合我的情况.