Frage

Von Apple Docs:

"Jeder Zugriffspegelmodifizierer oben akzeptiert optional ein einzelnes Argument, das aus dem Keyword-Set besteht, das in Klammern eingeschlossen ist (zum Beispiel privat (Set)). Verwenden Sie diese Form eines Zugangsniveaus Modifikator, wenn Sie einen Zugriffsebenen für den STERNTER von A angeben möchten Variable oder Index, die kleiner oder gleich dem Zugangsniveau von ist die Variable oder die Indexung selbst, wie in Getters diskutiert und Setter. "

Auszug aus: Apple Inc. "Die Swift-Programmiersprache." iBooks. https://itun.es/ru/jeuh0.l

ein Beispiel, das ich versuche, im Spielplatz zu testen:

generasacodicetagpre.

Ein Fehler, den ich in der Konsolenausgabe bekomme:

generasacodicetagpre.

Was mache ich falsch? Vermisse ich etwas?

ps1

Dieses Beispiel funktioniert gut:

generasacodicetagpre.

Mehr von docs:

"Der Zugriffsebene für das NumberOfEdits-Eigenschaft ist mit einem gekennzeichnet Privater (Set) -Montage, um anzuzeigen, dass die Eigenschaft einstellbar sein soll nur innerhalb derselben Quelldatei wie die Trackdstring-Struktur Definition. "

Auszug aus: Apple Inc. "Die Swift-Programmiersprache." iBooks. https://itun.es/ru/jeuh0.l

Bildbeschreibung hier eingeben

aber das brauche ich nicht. Ist es möglich, nicht zuzulassen, um variable Number-Dateien außerhalb der Struktur / Klasse einzustellen?

War es hilfreich?

Lösung

Ihr Problem liegt hier:

generasacodicetagpre.

Sie setzen den Wert einer berechneten Eigenschaft in einem eigenen Setter ein. Dies verursacht unendliche Rekursion. Vergessen Sie nicht, dass dies eine Eigenschaft berechnete ist: Es hat eigentlich keine Speicherung. Sie haben keine Variable "self.name", um etwas einzutragen; Sie haben nur ein paar Funktionen, um es zu berechnen. Berechnete Eigenschaften wie dieser sollten andere, nicht berechnete Variablen für die Speicherung verwenden. (Deshalb funktioniert Ihr Strukturbeispiel übrigens: Sie verwenden ein echtes Eigentum mit Lagerung.)

Sie werden nicht in Ihrem Debugging geholfen, in einem Spielplatz zu laufen. Bring mich nicht falsch: Spielplätze sind großartig. In diesem Fall dauert es jedoch viele Sekunden, um den Absturz zu stürzen, so dass der Absturz wahrscheinlich nicht angezeigt wird, wenn Sie nach einer Bearbeitung erwarten. Es zeigt Ihnen auch keine vollständige Stack-Trace (was für das Problem massiv ist, das Sie erhalten, und hat es in einer "echten" App reproduziert, und hätte es möglicherweise eher offensichtlicher gemacht, dass Sie den Stapel geblasen würden.), Erbaut und lief das oben genannte als Konsolen-App, es blieb schließlich mit einer Stapelspur 104.832 tiefe Anrufe, von denen alle nur zwei, von denen alles generakodicetagcode waren. Bit eines Hinweises :)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top