¿Cuándo se debe usar retain
? Entiendo que aumenta el recuento de referencias de objeto, por lo que básicamente el siguiente release
en ese objeto no llamará al dealloc
. Muy bien, ¿y qué? Leí que es una especie de convención, que si te importa un objeto, lo puedes retain
. ¿Hay algún ejemplo de eso por ahí? ¿Es eso verdad?¿Entender cuándo llamar retener en un objeto?
EDIT:
yo no estoy buscando cuando el depurador te dice que hagas esto o aquello. Entonces, miré en this.
Para ponerlo en mis palabras, he aquí un ejemplo de un uso retain
- en su código, se invoca en alguna parte un método un método que devuelve un objeto que usted no posee
- se trabaja con ese objeto
- entonces usted quiere liberarlo =>no se puede porque usted no es el propietario
- su solución es para cualquiera que use
copy
oretain
. Si usa el usuarioretain
, obtendrá la propiedad de ese objeto. - a continuación para liberar ese objeto, o bien realizar
release
2 (ya que el recuento ref es 1 + 1 cuando usted conserva) o utilizar directamente en éldealloc
es que? No lo creo porque un objeto puede tener múltiples propietarios. Entonces, para el último punto, llamar al dealloc
realmente "matará" al objeto; pero con 2 release
, no serás propietario, pero el programa que lo creó seguirá siendo, por lo tanto, los objetos están aún vivos en algún lugar (¿fuga? zombie?)
Por favor, estoy confundido.
posible duplicado de [Administración de memoria en Objective-C] (http://stackoverflow.com/questions/106627/memory-management-in-objective-c) – Abizern
No veo la necesidad de un voto negativo sobre este . upvoted – Bourne
Estoy tan confundido con retener. Simplemente no entiendo por qué uno lo usaría. Intenté expresar cómo lo usaría en la edición que acabo de hacer ... –