2012-02-24 14 views

Respuesta

145

La única diferencia entre weak y assign es que si el objeto A weak puntos de propiedad a se desasigna, entonces el valor del puntero weak se establecerá en nil, por lo que nunca se corre el riesgo de acceder a la basura. Si usa assign, eso no sucederá, por lo que si el objeto se desasigna de usted e intenta acceder a él, accederá a la basura.

Para objetos Objective-C, si se encuentra en un entorno donde puede usar weak, entonces debe usarlo.

+16

¿Sabes por qué algunas de las clases de framework de Cocoa Touch siguen utilizando assign para delegados? Por ejemplo, el delegado de [UISearchDisplayController] (https://developer.apple.com/library/ios/documentation/UIKit/Reference/UISearchDisplayController_Class/Reference/Reference.html#//apple_ref/occ/instp/UISearchDisplayController/delegate) todavía es asignar. ¿Por qué no fue actualizado? – Pwner

+0

@Pwner parece haber quedado obsoleto en iOS 8.0 – Stavash

+0

He aquí un ejemplo no desaprobado: incluso 'UITableView' tiene' assign' para su delegado: '@property (no atómico, asignar) id delegado;' –

Cuestiones relacionadas