Estoy navegando por el maravilloso blog mantenido por Scott Stevenson, y estoy tratando de entender un concepto fundamental del Objetivo-C de asignar a los delegados la propiedad 'asignar' frente a 'retener'. Tenga en cuenta que ambos son iguales en un entorno de recolección de basura. Me preocupa principalmente un entorno no basado en GC (por ejemplo: iPhone).
Directamente desde el blog de Scott:
"La palabra clave de asignación generará un setter que asigna el valor a la variable de instancia directamente, en lugar de copiarlo o retenerlo. Esto es mejor para tipos primitivos como NSInteger y CGFloat, u objetos que no son directamente suyos, como los delegados".
¿Qué significa que 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í. Por lo general, abstraigo UITableViewController lejos de su respectiva fuente de datos y delego también. También conservo ese objeto en particular. Quiero asegurarme de que nunca desaparezca para que mi UITableView siempre tenga su delegado.
¿Alguien más puede explicar dónde / por qué estoy equivocado, para poder entender este paradigma común en la programación de Objective-C 2.0 de usar la propiedad de asignación en los delegados en lugar de retener?
¡Gracias!