Pregunta
Los documentos de Apple especifican que:
Los observadores willSet y didSet no son llamados cuando una propiedad se inicializa por primera vez. Solo se llaman cuando el valor de la propiedad se establece fuera de un contexto de inicialización.
¿Es posible forzar que se invoquen estos durante la inicialización?
¿Por qué?
Digamos que tengo esta clase
class SomeClass {
var someProperty: AnyObject {
didSet {
doStuff()
}
}
init(someProperty: AnyObject) {
self.someProperty = someProperty
doStuff()
}
func doStuff() {
// do stuff now that someProperty is set
}
}
Creé el método doStuff
para hacer que las llamadas de procesamiento sean más concisas, pero prefiero simplemente procesar la propiedad dentro de la didSet
función. ¿Hay alguna manera de forzar esto a llamar durante la inicialización?
Actualizar
Decidí eliminar el intializador de conveniencia para mi clase y forzarlo a configurar la propiedad después de la inicialización. Esto me permite saber didSet
que siempre se llamará. No he decidido si esto es mejor en general, pero se adapta bien a mi situación.
defer
:convenience init(someProperty: AnyObject) { self.init() defer { self.someProperty = someProperty }