В чем разница между этим:
@property (nonatomic, weak) id <SubClassDelegate> delegate;
и это:
@property (nonatomic, assign) id <SubClassDelegate> delegate;
Я хочу использовать свойство для делегатов.
Ответы:
Единственное различие между weak
и assign
состоит в том, что если объект, на который weak
указывает свойство, освобожден, тогда значение weak
указателя будет установлено на nil
, так что вы никогда не рискуете получить доступ к мусору. Если вы используете assign
, этого не произойдет, поэтому, если объект будет удален из-под вас, и вы попытаетесь получить к нему доступ, вы получите доступ к мусору.
Для объектов Objective-C, если вы находитесь в среде, которую можно использовать weak
, вам следует использовать ее.
UITableView
assign
@property (nonatomic, assign) id <UITableViewDelegate> delegate;