Ich bin etwas verwirrt über diese beiden Qualifikanten ...
Mit ARC anstelle von weak
(d. H. Wenn ich Unterstützung für iOS 4 benötige) kann ich unsafe_unretained
verwenden, um die Auto-Nil-Funktionen zu verlieren ... das Endergebnis scheint ähnlich zu assign
zu sein.
unsafe_unretained
mit assign
austauschen? Es wäre wirklich interessant, einen Link von Apple-Dokumentation zu diesem Argument ... Ich kann nur ein paar Zeilen finden hier
Clangs technische Spezifikation von ARC geht viel detaillierter auf die Funktionsweise der Qualifier ein.
Aber, um Ihre Frage zu beantworten: assign
und __unsafe_unretained
sind nicht dasselbe. assign
ist ein Eigenschaftsattribut, das dem Compiler mitteilt, wie die Setter-Implementierung der Eigenschaft zu synthetisieren ist, während __unsafe_unretained
ein Besitzqualifizierer ist, das ARC mitteilt, wie retain
/ release
-Aufrufe eingefügt werden. Aber sie sind verwandt: wenn eine Eigenschaft deklariert wird, bedeutet assign
__unsafe_unretained
ownership.
Vor der ARC war assign
das Standardeigentumsqualifikationsmerkmal; Bei aktivierter ARC lautet der Standardwert für beibehaltene Objektzeigertypen strong
. (Für Skalare und andere Zeigertypen ist assign
immer noch der Standardwert.)
Tags und Links objective-c ios automatic-ref-counting