¿Para qué sirve AppDelegate y cómo sé cuándo usarlo?

votos
123

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

Publicado el 17/03/2009 a las 00:00
fuente por usuario
En otros idiomas...                            


4 respuestas

votos
220

Normalmente evito el enfoque de diseño implicado por el uso de Andrew del término "corazón de su aplicación". Lo que quiero decir con esto es que creo que debería evitar agrupar demasiadas cosas en una ubicación central: un buen diseño de programa normalmente implica separar la funcionalidad por "área de preocupación".

Un objeto delegado es un objeto que recibe una notificación cuando el objeto al que está conectado alcanza ciertos eventos o estados. En este caso, el delegado de la aplicación es un objeto que recibe notificaciones cuando el objeto UIApplication alcanza ciertos estados. En muchos aspectos, es un patrón de Observador uno-a-uno especializado.

Esto significa que el "área de preocupación" para AppDelegate es el manejo de estados de aplicación UIA especiales. Los más importantes de estos son:

  • applicationDidFinishLaunching: - bueno para manejar la configuración y la construcción en el inicio
  • applicationWillTerminate: - bueno para limpiar al final

Debería evitar poner otras funciones en AppDelegate, ya que no pertenecen realmente allí. Dicha otra funcionalidad incluye:

  • Datos del documento: debe tener un singleton del administrador de documentos (para varias aplicaciones de documentos) o un documento singleton (para aplicaciones de documentos únicos)
  • Controladores de botones / tablas / vistas, vista de métodos delegados u otro manejo de vista (excepto para la construcción de la vista de nivel superior en applicationDidFinishLaunching :) - este trabajo debe estar en las respectivas clases de controlador de vista.

Muchas personas agrupan estos elementos en su AppDelegate porque son flojos o porque piensan que AppDelegate controla todo el programa. Debe evitar la centralización en su AppDelegate, ya que enturbia las áreas de preocupación en la aplicación y no escala.

Respondida el 17/03/2009 a las 08:40
fuente por usuario

votos
22

El delegado de su aplicación es el corazón de su aplicación. Es efectivamente su "Controlador de programa".

El delegado de aplicación es la clase que recibe mensajes a nivel de aplicación, incluido el mensaje applicationDidFinishLaunching más comúnmente utilizado para iniciar la creación de otras vistas.

Si bien no es exactamente similar, podrías pensar que es la rutina principal () de tu programa Cocoa.

Respondida el 17/03/2009 a las 00:14
fuente por usuario

votos
1

Esperamos que esto ayude un poco más ...

Los programadores nuevos en esta lengua tienen siempre la misma pregunta - se inicia el programa desde un método principal? Sí, tiene usted razón en este caso; Aplicaciones IOS también comienzan a partir de un método principal.
Su clase principal llama a la función a continuación:

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

UIApplicationMain da inicio a la infraestructura de bucle de ejecución y aplicación Cocoa Touch que crea un UIApplicationobjeto. Nuestra aplicación necesita contenido para Objective-C utiliza un delegado para manejar esto. Es por eso que llamamos AppDelegate (actuar como delegado de UIApplication). Ponemos en práctica algunos de los métodos opcionales de que el delegado y se comporta en consecuencia.

Respondida el 10/02/2016 a las 07:44
fuente por usuario

votos
-1

@Shivam, gracias.

Por lo que entiendo de appDelegate, está cerca de lo que una Applicationestá en Android. El viewDidLoad, viewDidDisappeares comparable a lo del ciclo de vida de Android. Cada aplicación tiene un ciclo de vida, desde el lanzamiento a las interrupciones de las llamadas entrantes, a las notificaciones que muestran arriba. Si necesita que su código para hacer algo especial cuando estos systemeventos ocurren luego tiene que escribir código de los métodos.

En Android usamos onPause, onDestroy, onCreatemétodos poco de devolución de llamada para manejar este tipo de eventos del sistema.

Respondida el 27/01/2017 a las 15:01
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more