Es ist seltsam, dass in Big Nerd Ranch iOS 5 Buch (S.73) und Programmierung iOS 5 Buch (O'Reilly, S.314) (update: sogar Kochan's Objective-C Buch vierte Ausgabe) , im Kontext von ARC sagen sie, dass der Standardwert für Eigenschaftenattribute assign
... ist. Aber Apples Dokumentation sagt der Standard ist strong
.
Ich habe auch ein einfaches Programm ausprobiert. Wenn ich strong
nicht angabe, funktioniert das Programm ok, und wenn ich strong
anführe, funktioniert es genauso, und wenn assign
verwendet wird, zeigt der Compiler an eine Warnung, so scheint es der Standardwert ist strong
.
Also, wenn wir die meiste Zeit wollen,
%Vor%Dann können wir einfach schreiben
%Vor% wie die anderen beiden ( readwrite
und strong
) sind die Standardwerte?
readwrite und strong, sind in der Tat der Standard unter ARC *. Bei manueller Referenzzählung war Assign der Standardwert. Ich bevorzuge es, diese explizit zu spezifizieren, weil es deutlicher macht, welche Parameter die @ Eigenschaft ist, anstatt sich darauf zu verlassen, dass die Person, die den Code liest, weiß, was die Standardwerte sind.
* strong ist der Standardwert, wenn Sie entweder den Compiler eine Instanzvariable für sich synthetisieren lassen oder eine Instanzvariable ohne explizites Besitzqualifikationsmerkmal deklariert haben (in diesem Fall ist der ivar sowieso __strong
). Andernfalls entspricht der Standardeigentümerschaftstyp dem Besitzqualifizierer in der Ivar-Deklaration. Wenn Sie also explizit einen Ivar mit __weak
deklarieren und dann eine Eigenschaft @property ohne Eigentümereigenschaft deklarieren, ist die synthetisierte Eigenschaft schwach. Dies ist alles in der Clang ARC-Dokumentation dokumentiert.
Standardmäßig ist eine Objekteigenschaft strong, atomic, readwrite
. Sehen
Ссылка
Tags und Links objective-c automatic-ref-counting