ios delegates appdelegate uiapplicationdelegate uiapplication

ios - ¿Qué describe mejor al delegado de la solicitud? ¿Cómo encaja en todo el concepto?



delegates appdelegate (2)

Creo que para saber lo que hace el delegado de la aplicación. Tiene algunos métodos agradables como -applicationDidFinishLaunching que se llamará cuando la aplicación haya finalizado su lanzamiento, y así sucesivamente. Pero, ¿qué es eso en realidad? ¿Es ese algún objeto instanciado en la función UIApplicationMain ?

¿Y cómo funciona que cada clase en mi aplicación tenga acceso a ese objeto Delegado de la aplicación? ¿Hay algún buen gráfico en la red que visualice estas relaciones?


El objeto es instanciado de esta manera;

La función principal busca el conjunto de plumillas principales en la lista de información. La punta tiene como delegado de la aplicación que se establece en alguna clase que debe implementar UIApplicationDelegates y sus métodos requeridos. El delegado de la aplicación luego carga un controlador de vista.

Sirve como un objeto de devolución de llamada de toda la aplicación para eventos que afectan a toda la aplicación, como poca memoria, etc.


En Cocoa, un delegado es un objeto que otro objeto difiere en cuestiones de comportamiento e informa sobre los cambios en su estado. Por ejemplo, un UITableViewDelegate es responsable de responder las preguntas sobre cómo se debe comportar el UITableView cuando se hacen las selecciones o se reordenan las filas. Es el objeto que la UITableView pregunta cuando quiere saber qué altura debe tener una fila en particular. En el paradigma Modelo-Vista-Controlador, los delegados son Controladores, y los nombres de muchos delegados terminan en "Controlador".

A riesgo de afirmar lo obvio, UIApplicationDelegate es el delegado de UIApplication. La relación es un poco más obvia en Cocoa (Mac) que en Cocoa Touch (iPhone), ya que el delegado de NSApplication puede controlar el comportamiento de la NSApplication más directamente (evitando que la aplicación termine, por ejemplo). El iPhone no permite mucho control sobre la aplicación UIA, por lo que, en su mayoría, la aplicación UIApplicationDelegate está informada de los cambios en lugar de tener un proceso activo de toma de decisiones.

El UIApplicationDelegate no está estrictamente disponible en ninguna parte de la aplicación. La aplicación UIA singleton es ([UIApplication sharedApplication]), y a través de ella puede encontrar su delegado. Pero esto no significa que sea apropiado que cada objeto en una aplicación hable directamente con el delegado de la aplicación. En general, desaliento a los desarrolladores de tener objetos aleatorios que hablen con el delegado de la aplicación. La mayoría de los problemas que se resuelven de esa manera se resuelven mejor a través de Singletons, NSNotification u otros objetos delegados.

En cuanto a su creación, en Mac no hay nada mágico en el delegado de la aplicación. Es solo un objeto instanciado y conectado por el NIB en la mayoría de los casos. Sin embargo, en el iPhone, el delegado de la aplicación puede ser ligeramente mágico si UIApplicationMain () lo ejemplifica. El cuarto parámetro es un NSString que indica la clase del delegado de la aplicación, y UIApplicationMain () creará uno y lo configurará como el delegado de la aplicación compartida. Esto le permite configurar el delegado sin un NIB (algo muy difícil en Mac). Si el cuarto parámetro de UIApplicationMain () es nulo (como en las plantillas de Apple), el delegado es creado y conectado por el NIB principal, al igual que la ventana principal.