题
苹果的文档指定:
首次初始化属性时,不会调用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
}
}
我创建了method doStuff
,以使处理调用更简洁,但我只想处理didSet
函数中的属性。有没有办法在初始化过程中强制此调用?
更新资料
我决定只为我的类删除便捷的初始化器,并强迫您在初始化后设置属性。这使我知道didSet
将永远被调用。我还不确定总体上是否更好,但这很适合我的情况。
defer
以下各项结合使用:convenience init(someProperty: AnyObject) { self.init() defer { self.someProperty = someProperty }