6

Estoy en un proyecto de iPhone usando ARC. La aplicación es basada en navegación, usando UINavigationController.¿Al establecer objetos a cero cuando se usa ARC?

El caso de uso típico es pasar de un "principal" UIViewController a un "secundario" UIViewController varias veces, tal vez hasta 100 veces. El controlador secundario tiene muchas imágenes PNG locales y estáticas, algunas de ellas repetidas.

Estoy perfilando la aplicación y puedo ver cómo, al pasar del controlador "principal" al "secundario", asigna unos 0.8 MB, pero al presionar el botón Atrás, no libera la memoria. Entonces, cuando voy de nuevo al controlador secundario, se asignan otros 0,8 MB, y así sucesivamente ...

Depuración, noté que el método viewDidUnload: del UIViewController secundario nunca se está llamando, pero también leí que es eso método en el que se supone que configuro para anular las referencias guardadas por el controlador. Hacerlo en viewDidDisappear: no ayuda, porque quiero que ocurra solo cuando se presiona el botón Atrás, es decir, cuando se saca el controlador de la pila (también se llamaría al método viewDidDisappear: cuando se empuja otro controlador en la pila).

Entonces las preguntas son: ¿es allí donde tengo que hacer eso? ¿Puedo forzar que se llame ese método? ¿Está bien el comportamiento? (Creación de perfiles, las asignaciones aumentaron a 20 MB después de algunos ciclos de "main" -> "secondary" -> "main" -> "secondary" -> ...) ??

Gracias a todos de antemano

+0

ARC básicamente se usa para liberar el objeto automáticamente. Puede crear un nuevo proyecto con la desactivación del ARC para poder liberar los objetos manualmente. –

+0

implementar - (void) didReceiveMemoryWarning. Este es el método que se llama cuando su aplicación usa demasiada memoria. – MJB

+0

¿Cómo está implementando el comportamiento del botón de retroceso? ¿Puedes publicar el código para esto? – Jim

Respuesta

1

ARC sólo se utiliza para reducir el código y gestionar la memoria interna. Para obtener más detalles, consulte el tutorial a continuación para que pueda entender los conceptos más fácilmente.

Understanding Automatic Reference Counting in Objective-C

espero que esto podría ayudarle.

+0

De hecho, hace para aumentar mi conocimiento sobre ARC, gracias, ¡+1 por eso! Pero no resuelve mi problema, solo tengo que decirle a iOS que la instancia de ese controlador secundario, cada vez que el usuario presiona el botón Atrás, saliéndolo de la pila de navegación, ya no se usará. – sonxurxo

Cuestiones relacionadas