Soru
Apple'ın belgeleri şunları belirtir:
Bir özellik ilk başlatıldığında willSet ve didSet gözlemcileri çağrılmaz. Yalnızca mülkün değeri bir başlatma bağlamının dışında ayarlandığında çağrılırlar.
Başlatma sırasında bunları çağırmaya zorlamak mümkün mü?
Neden?
Diyelim ki bu dersim var
class SomeClass {
var someProperty: AnyObject {
didSet {
doStuff()
}
}
init(someProperty: AnyObject) {
self.someProperty = someProperty
doStuff()
}
func doStuff() {
// do stuff now that someProperty is set
}
}
doStuff
İşlem çağrılarını daha özlü hale getirmek için yöntemi oluşturdum , ancak didSet
işlevi işlev içindeki özelliği işlemek istiyorum . Başlatma sırasında bunu çağırmaya zorlamanın bir yolu var mı?
Güncelleme
Sadece benim sınıf için uygunluk intializer kaldırmaya karar verdi ve başlattıktan sonra özelliği ayarlamak için zorladı. Bu didSet
her zaman çağrılacak bilmeme izin veriyor . Bunun genel olarak daha iyi olup olmadığına karar vermedim, ancak durumuma iyi uyuyor.
defer
:convenience init(someProperty: AnyObject) { self.init() defer { self.someProperty = someProperty }