Qual è la differenza tra questo:
@property (nonatomic, weak) id <SubClassDelegate> delegate;
e questo:
@property (nonatomic, assign) id <SubClassDelegate> delegate;
Voglio usare la proprietà per i delegati.
Risposte:
L'unica differenza tra weak
e assign
è che se l'oggetto a cui weak
punta una proprietà viene deallocato, il valore del weak
puntatore verrà impostato su nil
, in modo da non correre mai il rischio di accedere a spazzatura. Se lo usi assign
, ciò non accadrà, quindi se l'oggetto viene deallocato da sotto di te e provi ad accedervi, accederai alla spazzatura.
Per gli oggetti Objective-C, se ti trovi in un ambiente in cui puoi usarlo weak
, dovresti usarlo.
UITableView
ha anche assign
per il suo delegato:@property (nonatomic, assign) id <UITableViewDelegate> delegate;