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 didSet
Funktion 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, didSet
dass 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 }