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.
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.
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.

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:
- La inicialización de la aplicación.
- Las transiciones de estado.
- 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.
Como su nombre lo indica, este bucle se ejecuta en el hilo principal de la aplicación, lo que asegura que los eventos relacionados con el usuario se procesen en el orden que se van recibiendo.

Todos estos eventos se ponen en cola internamente por la aplicación y se van enviando uno a uno al bucle. El UIApplication
es el primer objeto que recibe el evento y toma la decisión sobre lo que hay que hacer. Por ejemplo: un evento de toque es usualmente despachado al objeto de la ventana principal, que, a su vez, lo despacha a la vista en la que ocurrió el toque.
Los 5 estados de ejecución de una aplicación

En cualquier momento de una aplicación se tienen cinco estados que son:
- No ejecución: en este punto la aplicación no ha sido lanzada o fue terminada por el sistema operativo.
- Inactivo: la aplicación en este estado deja de recibir eventos propios para priorizar otros del sistema, como una llamada telefónica o un SMS.
- Activo: este es el estado más común de una aplicación que se está ejecutando en primer plano y recibe eventos.
- En segundo plano: cuando se va al home o se abre otra aplicación, si hay código ejecutable este será ejecutado. Si no hay, o la ejecución terminó, la aplicación será suspendida inmediatamente.
- Suspendido: si no hay nada pendiente de ejecutar o el sistema no tiene suficiente memoria para mantener la aplicación, esta será suspendida.
Métodos del ciclo de vida
Así como hay cinco estados del ciclo de vida de una aplicación, también hay cinco métodos para manejar cada uno de estos estados.
-
viewDidLoad
es llamado después de cargar la vista del controlador de memoria.func viewDidLoad()
Este método se llama después de que el controlador de la vista se haya cargado y solo funciona una vez. Esto quiere decir que no se llama continuamente.
-
viewWillAppear
notifica al controlador de la que la vista está a punto de ser añadida a una jerarquía de vistas.func viewWillAppear(_ animated: Bool)
Este método es llamado cada vez que aparece la vista. A diferencia de
viewDidLoad
, es llamado una y otra vez. Por esta razón, las transacciones únicas y de alto costo no deberían hacerse aquí. -
viewDidAppear
notifica al controlador que su vista fue agregada a una jerarquía de vistas.func viewDidAppear(_ animated: Bool)
En esta etapa la vista se carga y es visible para el usuario. En este método se pueden realizar operaciones costosas como la obtención de datos a través de la API, el almacenamiento de datos (
coreData
,userDefaults
, etcétera) y la activación de los servicios de localización. -
viewWillDisappear
notifica al controlador que su vista está a punto de ser eliminada de una jerarquía de vistas.func viewWillDisappear(_ animated: Bool)
La llamada a este método ocurre cada vez que la vista desaparece. Por la misma razón que con
viewWillApper
, las transacciones únicas y de alto coste no deberían suceder aquí.Se debe tener en cuenta que tanto
viewWillAppear
yviewWillDisappear
no son llamados nuevamente cuando la aplicación se ejecuta en segundo plano. -
viewDidDisappear
notifica al controlador de la vista que su vista fue eliminada de una jerarquía de vistas.func viewDidDisappear(_ animated: Bool)
Es posible anular este método para efectuar tareas adicionales asociadas a la eliminación u ocultación de la vista.
Pon a prueba tus habilidades como iOS developer
Ahora que ya sabes cómo funciona el ciclo de vida de una aplicación en iOS, tienes todas las herramientas para darle a tu usuario la mejor experiencia posible al utilizar las aplicaciones que tú desarrolles.
Si quieres conocer más sobre este lenguaje de programación llamado Swift, te invito a leer sobre 8 cosas que no sabías sobre Swift y si quieres aprender más sobre este lenguaje no dudes en pasarte por el Curso de Programación en Swift que te ayudará a dominar los conceptos necesarios para crear tus propias aplicaciones.
Recuerda: nunca pares de aprender. 💚
Curso de Programación en Swift (2019)