Closure: Nicht aufgelöste ID 'self' verwenden

8

Ich analysiere das Swift Language Guide-Tutorial (aus der Apple iOS dev-Bibliothek) und erstelle für jedes Kapitel eine separate swift-Datei. In jeder Datei erstelle ich mehrere Funktionen, in denen ich Codeschnipsel isoliere, die sie bereitstellen. Alles lief, bis die Strong Reference Cycles for Closures getestet wurden.  Wenn die Klasse, die eine Closure enthält (für eine berechnete Eigenschaft), innerhalb einer Funktion deklariert wird, kann die Closure die "self" -Referenz der einschließenden Klasse nicht sehen. Irgendwelche Ideen warum?  Es funktioniert gut, wenn die Klasse nicht innerhalb einer Funktion deklariert ist.

%Vor%     
Sorin J 31.03.2015, 10:20
quelle

2 Antworten

4

Sieht sehr ähnlich aus wie ein Fehler (oder zumindest ein Verhalten von funtionlokalen Strukturen / Klassen, die ich nicht dokumentiert finden kann). Das funktioniert gut:

%Vor%

Aber das ist nicht:

%Vor%

Eine innere Struktur innerhalb einer äußeren Struktur funktioniert jedoch:

%Vor%

Wie @ JeremyP sagt, sollten Sie ein Radar einlegen .

    
Airspeed Velocity 31.03.2015 11:16
quelle
1

Für mich habe ich diesen Fehler in XCode 8GM, Swift 3, iOS 10.0.

tl; dr

  • Closure-as-instance-Eigenschaft hat einen Fehler
  • Closure-as-computed-Eigenschaft ist geheilt!

Tatsächlicher Code

Buggy:

%Vor%

Koscher:

%Vor%

Hoffe das hilft einer anderen Seele da draußen.

    
AmitaiB 23.09.2016 12:51
quelle

Tags und Links