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.
O delegado do seu aplicativo é o coração do seu aplicativo. É efetivamente o seu "Controlador de Programa".
O Delegado do Aplicativo é a classe que recebe mensagens no nível do aplicativo, incluindo a mensagem applicationDidFinishLaunching mais comumente usada para iniciar a criação de outras visualizações.
Embora não seja exatamente semelhante, você pode pensar nisso como a rotina "main ()" do seu programa de cacau.
fonte
@Shivam, obrigado.
Pelo que entendi
appDelegate
, está próximo do queApplication
está no Android. OviewDidLoad
,viewDidDisappear
é comparável ao ciclo de vida do Android. Todo aplicativo tem um ciclo de vida, desde o lançamento até as interrupções das chamadas recebidas e as notificações que aparecem. Se você precisar do seu código para fazer algo especial quando essessystem
eventos ocorrerem, será necessário escrever os métodos nos códigos.Em Android usamos
onPause
,onDestroy
,onCreate
callback meio de métodos para lidar com tais eventos do sistema.fonte
onPause
,onCreate
eonDestroy
métodos de Android são mais semelhantes aoviewDidDisappear
,viewDidLoad
métodos de ciclo de vida de um modo de exibição do controlador iOS. Se você tiver que comparar, eu diria que aApplication
classe do Android estaria mais próxima daAppDelegate
do iOS.Espero que isso ajude um pouco mais ...
Os programadores iniciantes nesse idioma sempre têm a mesma pergunta - o programa começa com um método principal? Sim, você está certo neste caso; Os aplicativos IOS também iniciam a partir de um método principal.
Sua classe principal chama a função abaixo:
O UIApplicationMain inicia o loop de execução do Cocoa Touch e a infraestrutura do aplicativo que cria um
UIApplication
objeto. Nosso aplicativo precisa de conteúdo, de modo que o objetivo-c use um representante para lidar com isso. É por isso que chamamos AppDelegate (atuar como delegado deUIApplication
). Implementamos alguns dos métodos opcionais desse delegado e ele se comporta de acordo.fonte