web-dev-qa-db-ja.com

デリゲートプロパティ宣言の「弱い」と「割り当てる」の違いは何ですか

これの違いは何ですか:

@property (nonatomic, weak) id  <SubClassDelegate> delegate; 

この:

@property (nonatomic, assign) id  <SubClassDelegate> delegate; 

デリゲートのプロパティを使用したい。

85
Firdous

weakassignの唯一の違いは、weakプロパティが指すオブジェクトの割り当てが解除されると、weakポインターの値が設定されることです。 nilに変更すると、ガベージにアクセスするリスクが発生しなくなります。 assignを使用する場合、それは起こりません。そのため、オブジェクトがあなたの下から割り当て解除され、アクセスしようとすると、ガベージにアクセスします。

Objective-Cオブジェクトの場合、weakを使用できる環境にいる場合は、それを使用する必要があります。

151
yuji