weakSelf (das Gute), strongSelf (das Böse) und blocks (das Hässliche)

8

Ich habe gelesen, dass wenn ein solcher Block ausgeführt wird:

%Vor%

sollte so gemacht werden:

%Vor%

Ich möchte also eine Situation replizieren, in der weakSelf in der Mitte einer Blockausführung null erhält.

Also habe ich den folgenden Code erstellt:

* ViewController *

%Vor%

* MyBlockContainer *

%Vor%

Ich habe also erwartet, dass createBlockWeakyfy das Szenario erzeugen wird, das ich replizieren wollte, aber ich habe es nicht geschafft.

Die Ausgabe ist für createBlockWeakyfy und createBlockStrongify

gleich %Vor%

Jemand kann mir sagen, was ich falsch mache?

    
agy 22.07.2015, 15:01
quelle

1 Antwort

3

Ihr dispatch_async -Block erstellt eine starke Referenz. Wenn dieser Block auf Ihre MyBlockContainer zugreift, um die Eigenschaft myBlock zu erhalten, wird für die Lebensdauer dieses Blocks eine starke Referenz darauf erstellt.

Wenn Sie Ihren Code folgendermaßen ändern:

%Vor%

Sie sollten die Ergebnisse sehen, die Sie erwarten.

    
Mean Dinosaur 22.07.2015, 16:05
quelle