Frage
In den Apple-Dokumenten wird Folgendes angegeben:
willSet- und didSet-Beobachter werden beim ersten Initialisieren einer Eigenschaft nicht aufgerufen. Sie werden nur aufgerufen, wenn der Wert der Eigenschaft außerhalb eines Initialisierungskontexts festgelegt wird.
Ist es möglich, diese während der Initialisierung aufzurufen?
Warum?
Nehmen wir an, ich habe diese Klasse
class SomeClass {
var someProperty: AnyObject {
didSet {
doStuff()
}
}
init(someProperty: AnyObject) {
self.someProperty = someProperty
doStuff()
}
func doStuff() {
// do stuff now that someProperty is set
}
}
Ich habe die Methode erstellt doStuff, um die Verarbeitungsaufrufe präziser zu gestalten, aber ich möchte lieber nur die Eigenschaft innerhalb der didSetFunktion verarbeiten. Gibt es eine Möglichkeit, diesen Aufruf während der Initialisierung zu erzwingen?
Aktualisieren
Ich habe beschlossen, nur den Convenience-Intializer für meine Klasse zu entfernen und Sie zu zwingen, die Eigenschaft nach der Initialisierung festzulegen. Dadurch kann ich wissen, didSetdass immer aufgerufen wird. Ich habe nicht entschieden, ob dies insgesamt besser ist, aber es passt gut zu meiner Situation.
defer:convenience init(someProperty: AnyObject) { self.init() defer { self.someProperty = someProperty }