82
で「弱い」と「割り当て」の違いは何いただきました。この違い:デリゲートプロパティ宣言
@property (nonatomic, weak) id <SubClassDelegate> delegate;
と、この:
@property (nonatomic, assign) id <SubClassDelegate> delegate;
は、私は、デリゲートのプロパティを使用します。
で「弱い」と「割り当て」の違いは何いただきました。この違い:デリゲートプロパティ宣言
@property (nonatomic, weak) id <SubClassDelegate> delegate;
と、この:
@property (nonatomic, assign) id <SubClassDelegate> delegate;
は、私は、デリゲートのプロパティを使用します。
weak
とassign
の唯一の違いは、オブジェクトweak
プロパティポイントが割り当て解除された場合は、ごみにアクセスする危険を冒すことはないように、そしてweak
ポインタの値は、nil
に設定されるということです。 assign
を使用すると、それは起こりません。そのため、オブジェクトがあなたの下から解放されてアクセスしようとすると、ゴミにアクセスします。
Objective-Cオブジェクトの場合、weak
を使用できる環境であれば、それを使用する必要があります。
なぜCocoa Touchフレームワーククラスのいくつかが代理人のために代入を使用しているのを知っていますか?たとえば、[UISearchDisplayController](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UISearchDisplayController_Class/Reference/Reference.html#//apple_ref/occ/instp/UISearchDisplayController/delegate)の代理人は、依然として割り当てられます。なぜ更新されなかったのですか? – Pwner
@PwnerはiOS 8.0で廃止されているようです。 – Stavash
非推奨の例があります: 'UITableView'でもデリゲートに' assign'があります: '@property(nonatomic、assign)id delegate;' –