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 doStuffpara hacer que las llamadas de procesamiento sean más concisas, pero prefiero simplemente procesar la propiedad dentro de la didSetfunció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 didSetque 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 }