Verweisen [schwaches Selbst] als selbst? Inside animateWithDuration verursacht einen Absturz

9

Wenn ich [weak self] für eine Schließung deklariere und auf self als self? innerhalb von UIView.animateWithDuration referenziere, stürzt die App ab:

%Vor%

mit einem message sent to deallocated instance

aber wenn ich mich optional vorzeitig auspacke macht es das nicht

%Vor%

Warum ist das, ich würde denken, dass es egal ist, auf welche Weise ich das schwache Selbst referenziere, da es "nur" optional self? korrekt auspacken sollte. Für den Kontext wird dies in einer UICellView gemacht, die freigegeben wird, wenn ich die UICollectionViewController

belasse

BEARBEITEN: Filed einen Fehler mit Apfel: # 23492648

    
Shizam 11.11.2015, 01:04
quelle

1 Antwort

3

Ich denke, das Problem ist, dass self etwas Besonderes ist. Sie haben den Verweis auf self schwach an die anonyme Funktion übergeben, um einen Retain-Zyklus zu verhindern. In dieser Story gibt es jedoch nicht unbedingt ein optionales Wrapping self . So ist der syntaktische Zucker self?.someView.alpha = 1 - und erinnere dich, es ist nur syntaktischer Zucker - funktioniert nicht.

Es kann sein, dass Apple dies als einen Fehler betrachten wird; oder vielleicht nicht. Wie auch immer, die Lösung besteht darin, formell genau das zu tun, was Sie im zweiten Beispiel tun: Machen Sie den schwach-starken Tanz explizit .

    
matt 11.11.2015, 01:30
quelle