El ciclo de vida de una aplicación en iOS

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.

Qué sucede desde que se inicia un dispositivo hasta que se ejecuta una aplicación

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.

UIApplication

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.

3.png

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:

  1. La inicialización de la aplicación.
  2. Las transiciones de estado.
  3. Los eventos de alto nivel de la aplicación.

<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

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.