Big Nerd Ranch iOS 5の書籍(p.73)とプログラミングiOS 5の本(O'Reilly、p.314)(updadte:コカンのObjective-C本の第4版でさえ)は、 ARCの属性属性のデフォルトはassign
だと言いますが、Apple's documentationはデフォルトがstrong
だと言います。Objective-CではARCを使用していますが、通常は非属性をプロパティ属性として指定するだけでよいのですか?
また、私はstrong
を指定しない場合、プログラムがうまく動作し、私はstrong
を指定した場合、それは同じように動作し、assign
が代わりに使用されている場合、コンパイラは警告を示し、それ簡単なプログラムを試してみましたデフォルトは実際にstrong
と思われます。
だから、ほとんどの時間は、我々は
@property (nonatomic, readwrite, strong) NSMutableArray *foo;
をしたいならば、私たちは、他の2つ(readwrite
とstrong
)など
@property (nonatomic) NSMutableArray *foo;
を書くことができ、デフォルトはありますか?
割り当ては、ARCなしでのみ使用されるため、コンパイラの警告が表示されます。 – Darren
しかし、警告はARCで 'assign'を使うことに関するものではありません。それはオブジェクトが通常予想よりも早くリリースされることについてです –
'assign'はARCの' unsafe_unretained'と同じです。言い換えれば、MRCの下のassignと同じ振る舞いです。 –