¿Por qué a los delegados de Objective-C generalmente se les da la propiedad asignar en lugar de retener?


Estoy navegando a través del maravilloso blog mantenido por Scott Stevenson, y estoy tratando de entender un Objetivo fundamental: el concepto C de asignar a los delegados la propiedad 'asignar' vs 'retener'. Tenga en cuenta que ambos son los mismos en un entorno de recolección de basura. Me preocupa sobre todo un entorno no basado en GC (por ejemplo: iPhone).

Directamente desde el blog de Scott:

" La palabra clave assign 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 posees directamente, como los 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, retain se encargará de eso por mí. Normalmente abstrajo UITableViewController de su fuente de datos respectiva y delego también. También conservo ese objeto en particular. Quiero hacer seguro que nunca se va así que mi UITableView siempre tiene su delegado alrededor.

¿Puede alguien explicar más dónde/por qué me equivoco, para que pueda 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 retain?

Gracias!


Warning: Undefined property: agent_blog_content::$date_asked in /var/www/agent_etc/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 32

Warning: Undefined property: agent_blog_content::$count_answers in /var/www/agent_etc/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 52