Cuando se use [[UIAPPLICATION SHARTEPAPLAY] Delegado
-
28-09-2019 - |
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!!
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.
Cuando declaras
MyView *delegate
Esto debería serid delegate
oYourAppNameAppDelegate *delegate
.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.