O que descreve melhor o Delegado de Aplicativos? Como se encheckbox em todo o conceito?

Eu acho que sabe o que o App Delegate faz. Ele possui alguns methods interessantes, como -applicationDidFinishLaunching que será chamado quando o aplicativo terminar de ser executado, e assim por diante. Mas o que é isso realmente? Isso é algum object instanciado na function UIApplicationMain ?

E como funciona que todas as turmas do meu aplicativo tenham access a esse object do App Delegate? Existe algum bom gráfico na rede que visualize essas relações?

Em Cocoa, um delegado é um object que outro object adota em questões de comportamento e informa sobre 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 as linhas são reordenadas. É o object que o UITableView pergunta quando quer saber o quão alto uma determinada linha deve ser. No paradigma Model-View-Controller, os delegates são Controladores e os nomes de muitos delegates terminam em “Controller”.

Correndo o risco de declarar o óbvio, o UIApplicationDelegate é o delegado para o UIApplication. O relacionamento é um pouco mais óbvio no Cocoa (Mac) do que no Cocoa Touch (iPhone), já que o delegado do NSApplication é capaz de controlar o comportamento do NSApplication mais diretamente (evitando que o aplicativo seja encerrado, por exemplo). O iPhone não permite muito controle sobre o UIApplication, então, principalmente, o UIApplicationDelegate é informado das mudanças em vez de ter um processo de tomada de decisão ativo.

O UIApplicationDelegate não está estritamente disponível em 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 que todos os objects em um aplicativo falem diretamente com o delegado do aplicativo. Em geral, desestimulo os desenvolvedores de fazer com que objects randoms conversem com o delegado do aplicativo. A maioria dos problemas resolvidos dessa maneira é melhor resolvida através de Singletons, NSNotification ou outros objects delegates.

Quanto à sua criação, no Mac não há nada mágico sobre o delegado do aplicativo. É apenas um object instanciado e conectado pelo NIB na maioria dos casos. No iPhone, no entanto, o delegado do aplicativo pode ser um pouco mágico se for instanciado pelo UIApplicationMain (). O quarto parâmetro é um NSString indicando a class do delegado do aplicativo e UIApplicationMain () criará um e o configurará como o delegado do sharedApplication. Isso permite que você defina o delegado sem um NIB (algo muito difícil no Mac). Se o quarto parâmetro para UIApplicationMain () for nil (como nos modelos da Apple), o delegado será criado e conectado pelo NIB principal, assim como a janela principal.

O object é instanciado dessa maneira;

A function principal procura o conjunto principal de nib no info.plist. A ponta tem como delegado de aplicativo que é definido para alguma class que deve implementar UIApplicationDelegates e seus methods necessários. O delegado do aplicativo carrega então alguns viewcontroller.

Ele serve como um object de callback amplo para events que afetam todo o aplicativo, como pouca memory, etc.

    Intereting Posts