Calling -retainCount se considera perjudicial

O, por qué no uséretainCount En mis vacaciones de verano

Esta publicación está destinada a solicitar informes detallados sobre los por qué y por qué de ese infame método,retainCount, para consolidar la información relevante que flota alrededor de SO. *

Lo básico: ¿Cuáles son las razones oficiales para no usarretainCount? ¿Alguna vez hay alguna situaciónen absolut cuando podría ser útil? ¿Qué se debe hacer en su lugar? ** Siéntase libre de editorializar.

Histórico / explicativo: ¿Por qué Apple proporciona este método en elNSObject protocolo si no está destinado a ser utilizado? ¿El código de Apple se basa enretainCount por algún motivo? Si es así, ¿por qué no está escondido en alguna parte?

Para una comprensión más profunda: ¿Cuáles son las razones por las que un objeto puede tener un recuento de retención diferente al que se supondría a partir del código de usuario? ¿Puede dar algunos ejemplos *** de procedimientos estándar que el código marco podría usar que causen tanta diferencia? ¿Hay algún caso conocido en el que el recuento de retención seasiempr ¿diferente de lo que podría esperar un nuevo usuario?

Cualquier otra cosa que creas que vale la pena mencionarretainCount?

* Los codificadores que son nuevos en Objective-C y Cocoa a menudo lidian con, o al menos no entienden, el esquema de conteo de referencias. Las explicaciones del tutorial pueden mencionar los recuentos retenidos, que (de acuerdo con estas explicaciones) aumentan en uno cuando llama aretain, alloc, copy, etc., y hacia abajo en uno cuando llamas arelease (y en algún momento en el futuro cuando llame aautorelease).

Un hacker en ciernes de Cocoa, Kris, podría fácilmente tener la idea de que verificar el recuento de retención de un objeto sería útil para resolver algunos problemas de memoria y, he aquí, hay un método disponible en cada objeto llamadoretainCount! Kris llama aretainCount en un par de objetos, y este es demasiado alto, y ese es demasiado bajo, ¡¿y qué diablos está pasando ?! Entonces, Kris hace una publicación en SO, "¿Qué tiene de malo mi administración de memoria?" y luego un enjambre de letras <negrita>, <grande> desciende diciendo "¡No hagas eso! No puedes confiar en los resultados", lo cual está bien, pero nuestro intrépido codificador puede querer una explicación más profunda.

Espero que esto se convierta en una pregunta frecuente, una página de buenos ensayos / conferencias informativas de cualquiera de nuestros expertos que se inclinen a escribir uno, a los que se pueda señalar a los nuevos Cacahuetes cuando se pregunten porretainCount.

** No quiero hacer esto demasiado amplio, pero los consejos específicos de la experiencia o los documentos sobre verificación / depuración pueden ser apropiados aquí.

*** En código ficticio; obviamente, el público en general no tiene acceso al código real de Apple.

Respuestas a la pregunta(2)

Su respuesta a la pregunta