Normalmente evito el enfoque de diseño que implica el uso de Andrew del término "corazón de su aplicación". Lo que quiero decir con esto es que creo que debería evitar agrupar demasiadas cosas en una ubicación central: un buen diseño de programa normalmente implica separar la funcionalidad por "área de preocupación".
Un objeto delegado es un objeto que recibe una notificación cuando el objeto al que está conectado alcanza ciertos eventos o estados. En este caso, el delegado de aplicaciones es un objeto que recibe notificaciones cuando el objeto UIApplication alcanza ciertos estados. En muchos aspectos, es un patrón de Observador especializado uno a uno.
Esto significa que el "área de preocupación" para AppDelegate está manejando estados especiales de aplicación UIA. Los más importantes de estos son:
- applicationDidFinishLaunching: - bueno para manejar la configuración y construcción al inicio
- applicationWillTerminate: - bueno para limpiar al final
Debe evitar poner otras funciones en AppDelegate ya que realmente no pertenecen allí. Dicha otra funcionalidad incluye:
- Datos del documento: debe tener un administrador de documentos singleton (para múltiples aplicaciones de documentos) o un documento singleton (para aplicaciones de un solo documento)
- Controladores de botón / tabla / vista, métodos de delegado de vista u otro manejo de vista (excepto para la construcción de la vista de nivel superior en applicationDidFinishLaunching :): este trabajo debe realizarse en las clases de controlador de vista respectivas.
Muchas personas agrupan estas cosas en su AppDelegate porque son flojos o piensan que AppDelegate controla todo el programa. Debe evitar la centralización en su AppDelegate ya que enturbia las áreas de preocupación en la aplicación y no se escala.