iOS でアプリケーションのプロパティを作成する場合、いつ「割り当て」を使用する必要がありますか? 「保留」はいつ使うべきですか?
どちらか一方に利点はありますか?
iOS でアプリケーションのプロパティを作成する場合、いつ「割り当て」を使用する必要がありますか? 「保留」はいつ使うべきですか?
どちらか一方に利点はありますか?
割り当ては通常、プリミティブ型に使用されます。コンパイラは、単純な割り当て操作だけが行われるようにセッターを作成します。
一方、'retain' (ARC では "strong" と呼ばれるようになりました) 修飾子を使用してプロパティに値を設定すると、バッキング インスタンス変数が、設定されたオブジェクトの所有権を取得 (つまり、保持) します。
オブジェクトでは、説明したように所有権を取得したくなく、ARC を使用している場合は、'assign' の代わりに 'weak' 修飾子を使用することをお勧めします。
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)