У чому різниця між цим:
@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;