2011-04-21 14 views

Respuesta

7
[[[UIApplication sharedApplication] delegate] someMethod]; 

funciona como un encanto!

+0

gracias Daniel - y no hay nada de malo en usar esto para llamar a los métodos que están en el AppDelegate (método saveCoreData en mi caso)? es decir, ¿no hay nada en contra de que este sea contra las mejores prácticas o algo? – Greg

+0

El problema con este enfoque es que obtendrá advertencias del compilador si está llamando a un método personalizado definido en la clase de delegado de su aplicación sin convertirlo correctamente. –

+2

Personalmente, no me gusta esta forma de trabajar con el delegado de aplicaciones ya que conecta su viewController a la implementación del App-Delegate específico de la aplicación, reduciendo significativamente la reutilización de su viewController para otros proyectos. Entonces, si me preguntas, no hagas eso, pero define un protocolo adecuado o usa NSNotification. – Till

6

Puede obtener acceso al delegado de la aplicación desde cualquier controlador utilizando

MyDelegate* aDelegate = (MyDelegate *)[[UIApplication sharedApplication] delegate]; 
2

Esto sucede con tanta frecuencia, que siempre añadir un método para MyCustomAppDelegate a hacer esto por mí (así que no tengo mucho . de fundición en mi código

@implementation MyCustomAppDelegate() 
- (MyCustomAppDelegate *)appDelegate { 
    return (MyCustomAppDelegate *)[[UIApplication sharedApplication] delegate]; 
} 
@end 

ahora en cualquier lugar que pueda llamar

[MyCustomAppDelgate appDelegate] 
Cuestiones relacionadas