Se le conoce como ciclo de vida de una aplicación a la secuencia de eventos que se producen entre la ejecución y la terminación de la aplicación. Es muy importante entender el ciclo de vida de una aplicación para cualquier persona que desarrolle en iOS que quiera ofrecer una experiencia de usuario sin problemas. Así que veámoslo a detalle.
Cuando el usuario enciende el teléfono, no se ejecuta ninguna aplicación adicional a las que pertenecen al sistema operativo. En el momento que el usuario toca el icono de alguna aplicación, SpringBoard ejecuta dicha aplicación.
Mientras que SpringBoard
muestra la launch screen
de tu aplicación, la aplicación y las librerías necesarias para ejecutarla se cargan en la memoria. Una vez hecho esto, la aplicación inicia su ejecución y app delegate
comienza a recibir las notificaciones.
<aside>
📌 SpringBoard
es la aplicación estándar que gestiona la pantalla de inicio del iPhone. Algunas de sus tareas incluyen el inicio de WindowServer
, el lanzamiento y arranque de aplicaciones y la configuración de algunos de los ajustes del dispositivo en el arranque.
</aside>
UIApplicationDelegate
es la entrada principal de las aplicaciones. Este es un protocolo que se debe implementar en la aplicación para recibir notificaciones sobre los eventos del usuario, como el inicio de la aplicación, que pase a segundo plano, la apertura de una notificación e incluso la finalización de la aplicación.
Por último, la clase UIResponder
hace que AppDelegate
pueda responder a los eventos del usuario y la UIApplicationDelegate
permite que AppDelegate
sea un objeto que se encargue de gestionar y responder al ciclo de vida de la aplicación.
Swift tiene una función llamada UIApplicationMain
que configura varios objetos clave e inicia la ejecución de la aplicación. En el core de cualquier aplicación de iOS se tiene un objeto llamado UIApplication
, el cual tiene como trabajo facilitar TODAS las interacciones entre el sistema y el resto de los objetos de la aplicación.
El UIApplication
se encarga de gestionar el bucle de eventos y también otros comportamientos de alto nivel de la aplicación. Además, informa de las transiciones y de algunos eventos especiales (como las notificaciones push entrantes) al delegate
de la aplicación.
Por otro lado, el AppDelegate
es el corazón del código personalizado, ya que este objeto trabaja de la mano con el UIApplication
para manejar:
<aside> 📌 El objeto AppDelegate es el único que se garantiza que está presente en todas las aplicaciones, por lo que a menudo se utiliza para configurar las estructuras de datos iniciales de la aplicación.
</aside>
El bucle de ejecución principal (main run loop) de una aplicación procesa todos los eventos relacionados con el usuario. El objeto UIApplication
configura el bucle de ejecución principal en el momento del lanzamiento y lo emplea para procesar los eventos y manejar las actualizaciones de las interfaces.