1

iOS でアプリケーションのプロパティを作成する場合、いつ「割り当て」を使用する必要がありますか? 「保留」はいつ使うべきですか?

どちらか一方に利点はありますか?

4

2 に答える 2

7

割り当ては通常、プリミティブ型に使用されます。コンパイラは、単純な割り当て操作だけが行われるようにセッターを作成します。

一方、'retain' (ARC では "strong" と呼ばれるようになりました) 修飾子を使用してプロパティに値を設定すると、バッキング インスタンス変数が、設定されたオブジェクトの所有権を取得 (つまり、保持) します。

オブジェクトでは、説明したように所有権を取得したくなく、ARC を使用している場合は、'assign' の代わりに 'weak' 修飾子を使用することをお勧めします。

于 2013-10-21T13:55:46.577 に答える
3

ARC を使用している場合は、メモリを手動で管理していないため、retain を使用する必要はありません。

保持: ARC を使用していない場合は、アプリのメモリを手動で管理する必要があります。この場合、1 つの変数に対して保持を使用すると、カウントが 1 つ増えます。次に、割り当てを解除するには、カウントが 0 に達する必要があります。

割り当て: 割り当てプロパティのゲッターを呼び出すと、実際のデータへの参照が返されます。通常、この属性は、プリミティブ型のプロパティがある場合に使用します。

Strong: Objective-C Automated Reference Counting (ARC) の一部として、retain 属性を置き換えます。非 ARC コードでは、retain と同義です。参照を保持したいオブジェクトに使用します。一方、弱いものがあります:

@property (nonatomic, strong) UIColor *myColor
@property (nonatomic, assign) BOOL myBOOL

とにかく、このリンクは本当に便利で、ここよりも詳しく説明されています。 Objective-C で宣言された @property 属性 (nonatomic、copy、strong、weak)

于 2013-10-21T13:56:41.393 に答える