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框架類仍然在爲代表使用assign嗎?例如,[UISearchDisplayController]的代表(https://developer.apple.com/library/ios/documentation/UIKit/Reference/UISearchDisplayController_Class/Reference/Reference.html#//apple_ref/occ/instp/UISearchDisplayController/delegate)仍然分配。爲什麼不更新? – Pwner 2014-02-07 19:26:48
@Pwner看起來像它已被棄用在iOS 8.0 – Stavash 2015-03-01 20:25:31
這裏是一個不推薦使用的例子:即使'UITableView'具有'assign'給它的委託:'@property(nonatomic,assign)id delegate;' –
2015-03-20 23:59:36