Pregunta

(Solo para que sepa que estoy aprendiendo a desarrollar para iPhone, sin el generador de interfaces)

Estoy codificando mi primera aplicación de múltiples vistas, que tiene un controlador de vista raíz y otros dos controladores de vista, y el controlador de vista raíz utiliza carga lenta, por lo que cuando viewDidLoad, crea el primer controlador de vista y agrega su vista a la subvista, pero no crea el otro hasta que sea necesario. Pero, después de que se carga el segundo, ambos permanecen allí hasta que finaliza la aplicación (a menos que reciba una advertencia de memoria).

Entonces, me pregunto: cuando el usuario cambia dos la otra vista, ¿debería descargar la otra que se está eliminando (configurándola como nula, es una propiedad de retención)? Entonces, ¿cada vez que el usuario hace clic en el botón, el controlador de vista actual se descarga (después de ser eliminado de la supervista) y el siguiente se carga y agrega como una subvista?

Entonces, ¿es esto lo que hay que hacer, o es correcto, pero solo cuando la aplicación tiene muchas vistas y la mía no es lo suficientemente complicada como para justificarlo, o es malo hacerlo y debería simplemente ¿dejó que DidReceiveMemoryWarning se encargara de ello (en didReceiveMemoryWarning configuré el controlador de vista que actualmente no se muestra en cero)?

¿Fue útil?

Solución

La respuesta realmente depende. Por lo general, debe liberar y configurar en cero la vista que no se muestra, pero si el usuario va a cambiar entre ellos con frecuencia, es posible que desee mantener la vista oculta retenida (en caché).

Realmente no desea que su aplicación empuje el teléfono del usuario a didReceiveMemoryWarning. Cuando recibe esa advertencia, suceden otras cosas en el teléfono que pueden hacer que su aplicación se congele por un momento mientras el iPhone volca páginas de Safari en caché, objetos UIImageView en caché, etc. Este proceso puede ser notorio para el usuario final y su usuario. la aplicación puede no sentirse tan suave como debería.

También es importante recordar que algunos usuarios pueden estar usando iPhones, iPod Touch y 3G de primera generación para que no tengan la memoria extra del 3GS.

Dicho esto, me equivoco al ser conservador con la memoria, por lo que liberaría y anularía la vista, y luego volvería a crear una instancia cuando el usuario quiera verla. El impacto de su asignación de la vista frente a la limpieza del sistema debido a didReceiveMemoryWarning generalmente será mucho menor en el usuario de su aplicación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top