Esta es una vieja pregunta, pero hoy me hice la misma pregunta. Creo que la clase AppDelegate no se puede clasificar solo como un controlador . Hace control la Ventana y establece su controlador raíz para que pueda clasificarse como Controlador de Vista (nota: UIWindow hereda de UIView). Pero también realiza más tareas relacionadas con el Modelo, como la persistencia de los datos cuando la aplicación finaliza. Por lo tanto, puede considerarse un Controlador de Modelo o involucrarse con la Capa de Acceso a Datos también.
También es responsable de manejar la apertura de URL. Esto puede provocar un cambio en la Vista, pero también requerirá tareas relacionadas con el Modelo, como el análisis, la persistencia, la actualización, la autenticación, etc. Si la Vista/Modelo está enlazada a través de KVO, simplemente actualizar el modelo podría hacer que las Vistas necesarias se actualicen. Siento que esta sería una configuración mucho mejor. Además, el hecho de que, de manera predeterminada, toda la pila de datos básicos se agregue a AppDelegate lo aleja de la simple relación de visualización.
Cree que el hecho de que sea responsable de todo lo relacionado con la aplicación hace que tenga múltiples propósitos. Quizás es por esto que los desarrolladores terminan lanzando cualquier cosa aquí. Es el administrador de la aplicación tanto en el sentido del controlador raíz, la capa de servicio de la aplicación y el administrador del modelo de la aplicación.
Dado que AppDelegate es el punto de entrada a la aplicación (para el desarrollador), tiene sentido hablar de ello en términos de la aplicación. La aplicación está finalizando, la aplicación está ingresando el fondo, etc. Estamos hablando de la aplicación como una entidad modelo.
Puede realizar la persistencia de los datos en View Controller si lo desea, aunque esto no significa que deba hacerlo. En mi opinión, debe delegar todas las tareas que ha enlistado a los objetos del modelo real. –