Pregunta

No sé cuándo o por qué debería usar [[UIApplication sharedApplication] delegate]

Yo uso delegado cuando [self.navigationController pushViewController:myView Animation:YES] no navega. yo hago MyView *delegate = [[UIApplication sharedApplication] delegate] y [delegate pushViewController:myView Animation:YES] Para que la navegación funcione correctamente.

No sé si la solución es correcta y además no sé para qué sirve [[UIApplication sharedApplication] delegate] o cuáles son sus efectos en la aplicación.

¿Alguien me puede ayudar?

¡¡Gracias!!

¿Fue útil?

Solución

[[UIApplication sharedApplication] delegate] te dará un puntero a su Delegado de la aplicación. El que se creó automáticamente cuando realizó el proyecto. Por lo general, se nombra YourAppNameAppDelegate.

Dos cosas están un poco mal con su código.

  1. Cuando declaras MyView *delegate Esto debería ser id delegate o YourAppNameAppDelegate *delegate.

  2. No debería tener que acceder a su Controlador de navegación a través del delegado de la aplicación. Analizaría por qué self.avigationController está fallando y abordaría eso. Básicamente, está implementando un patrón Singleton cuando confía en el delegado de la aplicación. Debido a que el patrón de singleton es el patrón de diseño de programación menos genial, no le ganará ningún punto al hablar con otros programadores.

Otros consejos

self.appDelegate = [[UIApplication sharedApplication] delegate];

Cuando crea una variable llamada AppDelegate en su Ivars, no se configurará automáticamente en el delegado de la aplicación; debe configurarlo usted mismo. Desde cualquier lugar de su aplicación, puede acceder al Delegado por la aplicación Singleton.

[UIApplication sharedApplication] <--- da acceso al singleton

Delegate Method devuelve un puntero al delegado de la aplicación.

Entonces, dado que sus variables debían inicializarse, hay dos lugares lógicos para hacerlo: uno está en el inicializador si crea uno o en un método que se llama cerca del comienzo del uso de una vista y su controlador y que El lugar está en ViewDidload.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top