В чем разница между «слабым» и «назначенным» в объявлении свойства делегата - PullRequest
84 голосов
/ 24 февраля 2012

Какая разница между:

@property (nonatomic, weak) id  <SubClassDelegate> delegate; 

и этим:

@property (nonatomic, assign) id  <SubClassDelegate> delegate; 

Я хочу использовать свойство для делегатов.

1 Ответ

150 голосов
/ 24 февраля 2012

Единственная разница между weak и assign состоит в том, что если объект, на который указывает свойство weak, освобожден, то значение указателя weak будет установлено на nil, так что вы никогдарискуют получить доступ к мусору.Если вы используете assign, этого не произойдет, поэтому, если объект освобождается из-под вас и вы пытаетесь получить к нему доступ, вы получите доступ к мусору.

Для объектов Objective-C, если выв среде, где вы можете использовать weak, тогда вы должны использовать его.

...