Domanda
I documenti di Apple specificano che:
Gli osservatori willSet e didSet non vengono chiamati quando una proprietà viene inizializzata per la prima volta. Vengono chiamati solo quando il valore della proprietà è impostato al di fuori di un contesto di inizializzazione.
È possibile forzare la loro chiamata durante l'inizializzazione?
Perché?
Diciamo che ho questa lezione
class SomeClass {
var someProperty: AnyObject {
didSet {
doStuff()
}
}
init(someProperty: AnyObject) {
self.someProperty = someProperty
doStuff()
}
func doStuff() {
// do stuff now that someProperty is set
}
}
Ho creato il metodo doStuff, per rendere le chiamate di elaborazione più concise, ma preferirei semplicemente elaborare la proprietà all'interno della didSetfunzione. C'è un modo per forzare questo a chiamare durante l'inizializzazione?
Aggiornare
Ho deciso di rimuovere semplicemente l'intializer di convenienza per la mia classe e costringerti a impostare la proprietà dopo l'inizializzazione. Questo mi permette di sapere che didSetverrà sempre chiamato. Non ho deciso se nel complesso sia meglio, ma si adatta bene alla mia situazione.
defer:convenience init(someProperty: AnyObject) { self.init() defer { self.someProperty = someProperty }