Pergunta

Eu acho que saber o que a App Delegado faz. Ele tem alguns métodos interessantes como -applicationDidFinishLaunching que será chamado quando o aplicativo tem lançamento acabado, e assim por diante. Mas o que é que realmente? Se que algum objeto instanciado na função UIApplicationMain?

E como é que funciona que cada classe em meu aplicativo tem acesso a esse objeto App delegado? Existe alguma boa gráfico na rede que visualiza essas relações?

Foi útil?

Solução

Em Cacau, um delegado é um objeto que outro objeto remete para as questões de comportamento e informa sobre as mudanças em seu estado. Por exemplo, um UITableViewDelegate é responsável por responder perguntas sobre como o UITableView deve se comportar quando as seleções são feitas ou linhas são reordenadas. É o objeto que o UITableView pede quando se quer saber o quão alto uma linha específica deve ser. No paradigma Model-View-Controller, os delegados são controladores, e nomes de muitos dos delegados terminam em "Controller".

Em risco de afirmar o óbvio, o UIApplicationDelegate é o delegado para o UIApplication. A relação é um pouco mais evidente em Cocoa (Mac) do que em Cocoa Touch (iPhone), uma vez que o delegado NSApplication é capaz de controlar o comportamento do NSApplication mais diretamente (impedindo a aplicação de terminar por exemplo). O iPhone não permite muito controle sobre o UIApplication, assim na maior parte do UIApplicationDelegate é informado de alterações ao invés de ter um processo de tomada de decisão ativa.

O UIApplicationDelegate não é estritamente disponível a partir de todos os lugares no aplicativo. O UIApplication Singleton é ([UIApplication sharedApplication]), e através dele você pode encontrar seu delegado. Mas isso não significa que é apropriado para cada objeto em um aplicativo de falar diretamente com o delegado aplicativo. Em geral, eu desencorajar os desenvolvedores de ter objetos aleatórios falar com o delegado aplicativo. A maioria dos problemas que são resolvidos dessa maneira são melhor resolvidos através Singletons, NSNotification ou outros objetos delegado.

Como a sua criação, no Mac não há nada de mágico sobre o delegado aplicativo. É apenas um objeto instanciado e com fio pelo NIB na maioria dos casos. No iPhone, no entanto, o delegado aplicativo pode ser ligeiramente mágica se instanciado por UIApplicationMain (). O quarto parâmetro é um NSString indicando a classe do delegado do aplicativo, e UIApplicationMain () irá criar um e defini-lo como o delegado da sharedApplication. Isso permite que você defina o delegado sem um NIB (algo muito difícil no Mac). Se o quarto parâmetro para UIApplicationMain () é nula (como é nos modelos da Apple), em seguida, o delegado é criado e ligado pelo principal NIB, como a janela principal.

Outras dicas

O objeto é instanciado desta forma;

As-função principal olhares para o principal conjunto de ponta no info.plist. O bico tem como delegado aplicativo que está definido para uma classe que deve implementar UIApplicationDelegates e seus métodos necessários. O delegado aplicativo, em seguida, carrega alguns viewcontroller.

Ele serve como um grande objeto callback pedido de eventos que afeta toda a aplicação, tais como pouca memória, etc.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top