¿Cuál es la diferencia entre esto?
@property (nonatomic, weak) id <SubClassDelegate> delegate;
y esto:
@property (nonatomic, assign) id <SubClassDelegate> delegate;
Quiero usar propiedad para delegados.
Respuestas:
La única diferencia entre weak
y assign
es que si el objeto al que weak
apunta una propiedad está desasignado, entonces el valor del weak
puntero se establecerá en nil
, por lo que nunca corre el riesgo de acceder a la basura. Si lo usa assign
, eso no sucederá, por lo que si el objeto se desasigna debajo de usted e intenta acceder a él, accederá a la basura.
Para los objetos Objective-C, si se encuentra en un entorno en el que puede usar weak
, entonces debería usarlo.
UITableView
tiene assign
para su delegado:@property (nonatomic, assign) id <UITableViewDelegate> delegate;