これの違いは何ですか:
@property (nonatomic, weak) id <SubClassDelegate> delegate;
この:
@property (nonatomic, assign) id <SubClassDelegate> delegate;
デリゲートのプロパティを使用したい。
weak
とassign
の唯一の違いは、weak
プロパティが指すオブジェクトの割り当てが解除されると、weak
ポインターの値が設定されることです。 nil
に変更すると、ガベージにアクセスするリスクが発生しなくなります。 assign
を使用する場合、それは起こりません。そのため、オブジェクトがあなたの下から割り当て解除され、アクセスしようとすると、ガベージにアクセスします。
Objective-Cオブジェクトの場合、weak
を使用できる環境にいる場合は、それを使用する必要があります。