0

ARC の前は、.h ファイルでプロパティを次のように宣言していました。

@property (nonatomic,retain) UIView *someUIView;

ARC では、まだ使用する必要がありますretainか、それとも単にこれを記述できますか?

@property (nonatomic) UIView *someUIView;
4

2 に答える 2

2

LLVM 3.1 以降では、どちらも同じであるため、どちらでも実行できます。ARC では、strong(と同じretain) が、指定されていない場合、保持可能なオブジェクト ポインターの既定値です。

LLVM ARC docからの引用:

所有権のソースなしで合成された保持可能なオブジェクト ポインター型のプロパティは、関連付けられたインスタンス変数が既に存在する場合、その所有権を持ちます。それ以外の場合、[Apple 3.1、LLVM 3.1 以降] その所有権は暗黙のうちに強力になります。この改訂以前は、このようなプロパティを合成するのは不適切でした。

いずれにせよ、私は通常、「strong」と入力assignしていることに気づきます。以前はデフォルトだったので、所有権が指定されていない保持可能なオブジェクト プロパティが表示されるたびに、ほんの一瞬怖がってしまうからだと思います。

于 2012-06-21T01:39:37.260 に答える
1

strongキーワードはの代わりに宣伝されていretainますが、実際には同じものです。したがって、strongまたはを使用できますretain

ビューは、少なくとも 1 つのオブジェクトによって保持される必要があります。assignビューが別のオブジェクトによって既に保持されている場合は、それを(弱い) プロパティにすることができます。retainそれ以外の場合は、 orstrongキーワードを保持できます。

于 2012-06-21T00:54:27.543 に答える