В чем разница между "слабым" и "назначением" в объявлении свойства делегата


в чем разница между этим:

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

и так:

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

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

1 84

1 ответ:

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

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