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 didSet
funzione. 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 didSet
verrà 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 }