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 Objective-C Buch vierte Ausgabe), im Kontext von ARC sagen sie, dass das Standardeigenschaftsattribut assign
ist ... Aber Apple's documentation sagt, dass der Standard strong
ist.In Objective-C mit ARC, ist es wahr, dass wir normalerweise nicht-atomare Eigenschaften als Eigenschaften angeben müssen?
Ich habe auch versucht, ein einfaches Programm, in dem, wenn ich das Programm funktioniert ok, nicht strong
angeben, und wenn ich strong
angeben, funktioniert es gleich, und wenn assign
stattdessen verwendet wird, zeigt der Compiler eine Warnung, so dass es scheint der Standard ist in der Tat strong
.
Also, wenn die meiste Zeit wollen wir
@property (nonatomic, readwrite, strong) NSMutableArray *foo;
dann können wir nur schreiben
@property (nonatomic) NSMutableArray *foo;
wie die beiden anderen (readwrite
und strong
) sind Standardwerte?
Zuordnung wird nur mit keiner ARC verwendet, weshalb Sie die Compiler-Warnung erhalten. – Darren
, aber die Warnung ist nicht über 'assign' in ARC. Es geht darum, dass das Objekt früher als normalerweise erwartet freigegeben wird. –
'assign' ist dasselbe wie' unsafe_unreteted' unter ARC. Mit anderen Worten, das Verhalten ist das gleiche wie bei der Zuweisung unter MRC. –