Estoy tratando de aprender el conteo automático de referencias en iOS 5. Ahora, la primera parte de esta pregunta debería ser fácil:
¿Es correcto que NO necesito escribir declaraciones explícitas de propiedad de lanzamiento en mi dealloc cuando uso ARC? En otras palabras, ¿es cierto que lo siguiente NO necesita un acuerdo explícito?
@interface MyClass : NSObject @property (strong, nonatomic) NSObject* myProperty; @end @implementation MyClass @synthesize myProperty; @end
Mi siguiente y más importante pregunta proviene de una línea en el documento Notas de la versión de transición a ARC :
No es necesario (de hecho no puede) liberar variables de instancia, pero es posible que deba invocar [self setDelegate: nil] en las clases del sistema y otro código que no se compila utilizando ARC.
Esto plantea la pregunta: ¿cómo sé qué clases de sistema no están compiladas con ARC? ¿Cuándo debería crear mi propio Dealloc y establecer explícitamente propiedades de retención fuerte en cero? ¿Debo suponer que todas las clases de marco NS y UI utilizadas en las propiedades requieren deallocs explícitos?
Existe una gran cantidad de información sobre SO y en otros lugares sobre las prácticas de liberar el ivar de respaldo de una propiedad cuando se usa el seguimiento de referencia manual, pero relativamente poco acerca de esto cuando se usa ARC.
MyController : UIViewController
clase que crea y posee una UIView y también establece el delegado de la vista en sí mismo. Es el único propietario que retiene esa vista. Cuando el controlador se desasigna, la vista también debe desasignarse. ¿Importa entonces si el puntero delegado está colgando?