Normalmente, evito a abordagem de design implícita pelo uso do termo "coração do seu aplicativo" por Andrew. O que quero dizer com isso é que acho que você deve evitar agrupar muitas coisas em um local central - um bom design de programa normalmente envolve a separação da funcionalidade por "área de preocupação".
Um objeto delegado é um objeto que é notificado quando o objeto ao qual está conectado atinge determinados eventos ou estados. Nesse caso, o Application Delegate é um objeto que recebe notificações quando o objeto UIApplication atinge determinados estados. Em muitos aspectos, é um padrão de Observador um para um especializado.
Isso significa que a "área de preocupação" para o AppDelegate está lidando com estados especiais do UIApplication. Os mais importantes são:
- applicationDidFinishLaunching: - bom para manipular configuração e construção na inicialização
- applicationWillTerminate: - bom para limpar no final
Você deve evitar colocar outras funcionalidades no AppDelegate, pois elas realmente não pertencem a ele. Essa outra funcionalidade inclui:
- Dados do documento - você deve ter um singleton do gerenciador de documentos (para vários aplicativos de documento) ou um singleton de documento (para aplicativos de documento único)
- Controladores de botão / tabela / exibição, métodos de delegação de exibição ou outro tratamento de exibição (exceto para a construção da exibição de nível superior em applicationDidFinishLaunching :) - este trabalho deve estar nas respectivas classes de controlador de exibição.
Muitas pessoas colocam essas coisas no AppDelegate porque são preguiçosas ou acham que o AppDelegate controla todo o programa. Você deve evitar centralizar no AppDelegate, pois ele atrapalha as áreas de preocupação no aplicativo e não aumenta.