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