¿Cuál es la diferencia entre viewDidLoady viewDidAppear? ¿Qué tipo de inicialización o código personalizado se incluye en esas funciones?
por ejemplo, presentModalViewControllerfunciona solo cuando está presente viewDidAppeary no está encendido viewDidLoad.

Respuestas:
viewDidLoadse llama exactamente una vez, cuando el controlador de vista se carga por primera vez en la memoria. Aquí es donde desea crear una instancia de las variables de instancia y crear las vistas que vivan durante todo el ciclo de vida de este controlador de vistas. Sin embargo, la vista todavía no es visible en este punto.viewDidAppearse llama cuando la vista es realmente visible y se puede llamar varias veces durante el ciclo de vida de un controlador de vista (por ejemplo, cuando se descarta un controlador de vista modal y la vista vuelve a ser visible). Aquí es donde desea realizar cualquier acción de diseño o hacer cualquier dibujo en la interfaz de usuario, por ejemplo, presentar un controlador de vista modal. Sin embargo, todo lo que haga aquí debería ser repetible. Es mejor no retener cosas aquí, o de lo contrario obtendrá pérdidas de memoria si no las libera cuando la vista desaparece.Ver: https://developer.apple.com/documentation/uikit/uiviewcontroller
fuente
viewDidLoadgeneralmente solo se llama una vez y solo una vez, hay una situación en la que se puede llamar nuevamente. Específicamente, si alguna vez recibe un mensajedidReceiveMemoryWarning, sus vistas no visibles pueden ser liberadas (aunque los controladores de vista están intactos) y cuando regrese, esviewDidLoadposible que se le solicite nuevamente.didReceiveMemoryWarning. Pero estoy de acuerdo en que si emplea buenas prácticas al escribir suviewDidLoad, debería estar bien. Mi único punto es que el uso descuidado de ivars y la administración manual de la memoria definitivamente pueden resultar en fugasviewDidLoad. Las personas deben ser sensibles aldidReceiveMemoryWarningescenario y programar en consecuencia.viewDidLoadcódigo que se filtrarádidReceiveMemoryWarning. Suspiro.En pocas palabras, querrá crear controles o matrices en
viewDidLoad, donde como enviewDidAppeares donde desearía actualizar esos controles o matrices.viewDidLoadse llama una vez cuando se crea el controlador yviewDidAppearse llama cada vez que aparece la vista, bueno, DID. Entonces, digamos que tiene una vista modal que presenta, cuando esa vista se descarta,viewDidAppearse llamará yviewDidLoadno se llamará.fuente
viewDidLoadse puede llamar más de una vez . Si su vista mientras no se muestra (debajo de una pila de otras vistas) es descargada por versiones anteriores de iOS en una situación de poca memoria, entonces el controlador de vista recargará automáticamente la vista cuando sea necesario volver a mostrarla en la pantalla. En versiones posteriores de iOS, puede optar por ayudar a reducir el uso de memoria haciendo lo que iOS hizo anteriormente por usted: descargar las vistas fuera de la pantalla cuandodidReceiveMemoryWarningllegue el mensaje, en cuyo caso seviewDidLoadvolverá a llamar.