Cuando mi aplicación de iPhone recibe una advertencia de memoria, las vistas de UIViewControllers que no están actualmente visibles se descargan. En un controlador en particular, descargar la vista y las salidas es bastante fatal.UIViewController impide que la vista se descargue
Estoy buscando una forma de evitar que esta vista se descargue. Encuentro este comportamiento bastante estúpido, tengo un mecanismo de caché, así que cuando aparece una advertencia de memoria, descargo toneladas de datos y libero suficiente memoria, pero definitivamente necesito esta vista intacta.
Veo que UIViewController tiene un método unloadViewIfReloadable
, que se invoca cuando aparece la advertencia de memoria. ¿Alguien sabe cómo decirle a Cocoa Touch que mi vista no es recargable?
¿Alguna otra sugerencia de cómo evitar que mi vista se descargue en la advertencia de memoria?
Gracias de antemano
documentos de Apple sobre el ciclo de vista de la vida de un controlador de vista dice:
didReceiveMemoryWarning - El valor predeterminado aplicación libera la vista única si se determina que es Es seguro hacer entonces
Ahora ... Anulo el didReceiveMemoryWarning
con una función vacía que simplemente llama a NSLog para avisarme que se recibió una advertencia. Sin embargo, la vista se descarga de todos modos. Además, en qué criterios se decide exactamente si una vista es segura para descargar ... ¡oh! ¡Muchas preguntas!
Quizás deba refaccionar su diseño para que las piezas que no se deben liberar sean parte de un objeto persistente separado, que no sea parte de la vista en sí. –
Hola David, toda la jerarquía de vistas se muestra en la pantalla, y no quiero desmontarla y volver a compilarla, mientras que muestro un control de vista modal en la parte superior ... ¿no es una exageración? –
Me encanta la solución provista por @umpo, pero chicos, este código da como resultado una advertencia de tiempo de ejecución como que la implementación 'MyViewController de -viewDidUnload hizo que la vista se volviera a cargar. Esto tendrá un impacto adverso en el rendimiento del sistema. - ¿Lo ignora o hace algo al respecto? – matm