¿Para qué sirve AppDelegate y cómo saber cuándo utilizarlo?

Estoy empezando a trabajar en aplicaciones para iPhone. ¿Cómo sé cuándo debería poner cosas en AppDelegate en comparación con una class personalizada? ¿Hay alguna regla o algún tipo de analogía con otro lenguaje de progtwigción como Python o PHP que utiliza un patrón como AppDelegate?

Normalmente evito el enfoque de layout que implica el uso de Andrew del término "corazón de tu aplicación". Lo que quiero decir con esto es que creo que deberías evitar acumular demasiadas cosas en una location central: un buen layout de progtwig normalmente implica separar la funcionalidad por "área de preocupación".

Un object de delegado es un object que recibe una notificación cuando el object al que está conectado alcanza ciertos events o estados. En este caso, el Delegado de la aplicación es un object que recibe notifications cuando el object UIApplication alcanza ciertos estados. En muchos aspectos, es un patrón Observer especializado uno a uno.

Esto significa que el "área de interés" para AppDelegate está manejando estados especiales de UIApplication. Los más importantes de estos son:

  • applicationDidFinishLaunching: – bueno para manejar la configuration y la construcción de inicio
  • aplicación Terminar: – bueno para la limpieza al final

Debe evitar poner otras funcionalidades en AppDelegate ya que en realidad no pertenecen allí. Dicha otra funcionalidad incluye:

  • Datos del documento: debe tener un gestor de documentos singleton (para múltiples aplicaciones de documentos) o un documento singleton (para aplicaciones de documentos únicos)
  • Controladores de botones / tablas / vista, ver methods de delegado u otro event handling vistas (excepto la construcción de la vista de nivel superior en applicationDidFinishLaunching :): este trabajo debería estar en las classs de controller de vista respectivas.

Muchas personas agrupan estas cosas en su AppDelegate porque son perezosas o creen que AppDelegate controla todo el progtwig. Debe evitar la centralización en su AppDelegate ya que enturbia las áreas de interés en la aplicación y no escala.

Su delegado de aplicación es el corazón de su aplicación. Es efectivamente su "controller de progtwig".

El Delegado de la aplicación es la class que recibe los posts a nivel de aplicación, incluido el post applicationDidFinishLaunching más comúnmente utilizado para iniciar la creación de otras vistas.

Si bien no es exactamente similar, podría pensarlo como la rutina "principal ()" de su progtwig de Cacao.

Espero que esto ayude un poco más …

Los progtwigdores nuevos en este idioma siempre tienen la misma pregunta: ¿el progtwig comienza desde un método principal? Sí, tienes razón en este caso; Las aplicaciones IOS también comienzan con un método principal.
Su class principal llama a la siguiente function:

UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 

UIApplicationMain inicia el ciclo de ejecución de Cocoa Touch y la infraestructura de la aplicación que crea un object UIApplication . Nuestra aplicación necesita contenido para que el objective-c use un delegado para manejar esto. Es por eso que lo llamamos AppDelegate (actúa como delegado de UIApplication ). Implementamos algunos de los methods opcionales de ese delegado y se comporta en consecuencia.

@Shivam, gracias.

Por lo que entiendo de appDelegate , es cercano a lo que es una Application en Android. El viewDidLoad , viewDidDisappear es comparable al ciclo de vida de Android. Cada aplicación tiene un ciclo de vida, desde el inicio hasta las interrupciones de las llamadas entrantes, hasta las notifications que se muestran. Si necesita su código para hacer algo especial cuando se produzcan estos events del system , debe escribir los methods.

En Android utilizamos onPause , onDestroy , en la onCreate methods de callback para manejar dichos events del sistema.