Questão
Os documentos da Apple especificam que:
Os observadores willSet e didSet não são chamados quando uma propriedade é inicializada. Eles são chamados apenas quando o valor da propriedade é definido fora de um contexto de inicialização.
É possível forçar que estes sejam chamados durante a inicialização?
Por quê?
Digamos que eu tenho essa aula
class SomeClass {
var someProperty: AnyObject {
didSet {
doStuff()
}
}
init(someProperty: AnyObject) {
self.someProperty = someProperty
doStuff()
}
func doStuff() {
// do stuff now that someProperty is set
}
}
Criei o método doStuff
, para tornar as chamadas de processamento mais concisas, mas prefiro apenas processar a propriedade dentro da didSet
função. Existe uma maneira de forçar isso a chamar durante a inicialização?
Atualizar
Decidi remover o intializer de conveniência da minha classe e forçá-lo a definir a propriedade após a inicialização. Isso me permite saber didSet
que sempre será chamado. Ainda não decidi se isso é melhor no geral, mas combina bem com minha situação.
defer
:convenience init(someProperty: AnyObject) { self.init() defer { self.someProperty = someProperty }