Estoy navegando a través del maravilloso blog mantenido por Scott Stevenson, y estoy tratando de comprender un concepto fundamental de Objective-C para asignar a los delegados la propiedad 'asignar' frente a 'retener'. Tenga en cuenta que ambos son iguales en un entorno recolectado de basura. Me preocupa sobre todo un entorno no basado en GC (p. Ej .: iPhone).¿Por qué a los delegados de Objective-C generalmente se les asigna la propiedad en lugar de retener?
Directamente desde el blog de Scott:.
"La palabra clave de asignación generará un colocador que asigna el valor de la variable de instancia directamente, en lugar de copiar o retenerlo Este es el mejor para los tipos primitivos como NSInteger y CGFloat, o objetos que no posee directamente, como delegados ".
¿Qué significa que usted no posee directamente el objeto delegado? Normalmente retengo a mis delegados, porque si no quiero que se vayan al abismo, retener se encargará de eso por mí. Normalmente, elimino UITableViewController de su respectivo dataSource y también lo delego. También retengo ese objeto en particular. Quiero asegurarme de que nunca desaparezca, por lo que mi UITableView siempre tiene su delegado.
¿Alguien más puede explicar dónde/por qué estoy equivocado, entonces puedo entender este paradigma común en la programación de Objective-C 2.0 de usar la propiedad assign en los delegados en lugar de retener?
Gracias!
Reetiquetado con "delegados" y sin "iphone". –
¿Por qué el delegado asigna en lugar de copiar (como NSString?) – OMGPOP