In Objective-C mit ARC ist es richtig, dass wir normalerweise nur atomare Eigenschaften als Eigenschaften angeben müssen?

8

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?

    
太極者無極而生 14.06.2012, 20:55
quelle

2 Antworten

12

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.

    
Andrew Madsen 14.06.2012, 21:10
quelle
0

Standardmäßig ist eine Objekteigenschaft strong, atomic, readwrite . Sehen Ссылка

    
Miguel Gallego 14.06.2015 21:05
quelle