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