Gibt es eine Ivar-Eigenschaft, die wir in einem Swift-Getter verwenden sollten? Mein Code veranlasst den Getter, den Getter aufzurufen, bis das Programm abstürzt:
%Vor%Swift-Eigenschaften haben nicht das Konzept eines separaten zugrunde liegenden Speichers wie in Objective-C. Stattdessen müssen Sie eine zweite (private) Eigenschaft erstellen und diese als Speicher verwenden:
%Vor% Wenn Sie nur useDocument()
aufrufen möchten, nachdem die Eigenschaft document
festgelegt wurde, können Sie die Getter-, Setter- und private-Eigenschaft weglassen und stattdessen einfach willSet
oder didSet
verwenden.
Wenn Sie versuchen, eine benutzerdefinierte Verarbeitung zu erstellen, wenn die Eigenschaft festgelegt ist, müssen Sie kein separates Hintergrunddatenelement definieren und eine berechnete Eigenschaft implementieren: Sie können willSet
und didSet
verwenden. Eigenschaftenbeobachter , die automatisch vor und nach aufgerufen werden, nachdem die Eigenschaft festgelegt wurde.
In diesem speziellen Fall sollten Sie Ihre Property so implementieren:
%Vor%Vorgeschlagener Messwert: Objektbeobachter
In Ihrem Code gibt es eine unendliche Rekursionssituation: zum Beispiel ruft self.document
im Getter den Getter selbst auf.
Sie müssen explizit einen ivar definieren. Hier ist eine mögliche Lösung:
%Vor%