Вопрос
Документы Apple указывают, что:
Наблюдатели willSet и didSet не вызываются при первой инициализации свойства. Они вызываются, только когда значение свойства установлено вне контекста инициализации.
Можно ли заставить их вызываться во время инициализации?
Зачем?
Допустим, у меня есть этот класс
class SomeClass {
var someProperty: AnyObject {
didSet {
doStuff()
}
}
init(someProperty: AnyObject) {
self.someProperty = someProperty
doStuff()
}
func doStuff() {
// do stuff now that someProperty is set
}
}
Я создал метод doStuff
, чтобы сделать обработку вызовов более лаконичной, но я бы предпочел просто обработать свойство внутри didSet
функции. Есть ли способ заставить это вызвать во время инициализации?
Обновить
Я решил просто удалить удобство Intializer для моего класса и заставить вас установить свойство после инициализации. Это позволяет мне знать, didSet
что всегда будет называться. Я не решил, будет ли это лучше в целом, но это хорошо подходит для моей ситуации.
defer
:convenience init(someProperty: AnyObject) { self.init() defer { self.someProperty = someProperty }