ARC の前は、.h ファイルでプロパティを次のように宣言していました。
@property (nonatomic,retain) UIView *someUIView;
ARC では、まだ使用する必要がありますretain
か、それとも単にこれを記述できますか?
@property (nonatomic) UIView *someUIView;
ARC の前は、.h ファイルでプロパティを次のように宣言していました。
@property (nonatomic,retain) UIView *someUIView;
ARC では、まだ使用する必要がありますretain
か、それとも単にこれを記述できますか?
@property (nonatomic) UIView *someUIView;
LLVM 3.1 以降では、どちらも同じであるため、どちらでも実行できます。ARC では、strong
(と同じretain
) が、指定されていない場合、保持可能なオブジェクト ポインターの既定値です。
LLVM ARC docからの引用:
所有権のソースなしで合成された保持可能なオブジェクト ポインター型のプロパティは、関連付けられたインスタンス変数が既に存在する場合、その所有権を持ちます。それ以外の場合、[Apple 3.1、LLVM 3.1 以降] その所有権は暗黙のうちに強力になります。この改訂以前は、このようなプロパティを合成するのは不適切でした。
いずれにせよ、私は通常、「strong」と入力assign
していることに気づきます。以前はデフォルトだったので、所有権が指定されていない保持可能なオブジェクト プロパティが表示されるたびに、ほんの一瞬怖がってしまうからだと思います。
strong
キーワードはの代わりに宣伝されていretain
ますが、実際には同じものです。したがって、strong
またはを使用できますretain
。
ビューは、少なくとも 1 つのオブジェクトによって保持される必要があります。assign
ビューが別のオブジェクトによって既に保持されている場合は、それを(弱い) プロパティにすることができます。retain
それ以外の場合は、 orstrong
キーワードを保持できます。