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