Comment appeler une méthode Appdelegate à partir de RootViewController sans passer un délégué? P>
Vous demandez simplement s'il existe un moyen de faire cela? (Ou dois-je créer un objet de délégué dans la racine racine pour tenir une référence à l'appdelegate) p>
3 Réponses :
[[[UIApplication sharedApplication] delegate] someMethod]; Works like a charm!
Merci Daniel - et il n'y a rien de mal à utiliser ceci pour appeler des méthodes dans l'Appdelegate (méthode SavecoreData dans mon cas)? I.e. Il n'y a rien à propos de cet être contre la meilleure pratique ou quoi que ce soit?
Le problème avec cette approche est que vous obtiendrez des avertissements du compilateur si vous appelez une méthode personnalisée définie dans votre classe de déléguée de l'application sans la jeter correctement.
Personnellement, je n'aime pas cette façon de travailler avec le délégué de l'application, car il accélère votre appel à votre appel à la mise en œuvre du délégué d'applications spécifique à l'application, réduisant de manière significative la réutilisabilité de votre site de visiteuse appelant à d'autres projets. Donc, si vous m'avez demandé, ne faites pas cela, mais définissez un protocole approprié ou utilisez NSNotification.
@Till je suis d'accord avec ça, mais cela dépend de la taille du projet. Le temps passé à la conception et à l'architecture doit aimer toute autre chose être proportionnelle à l'échelle du projet, si je faisais une application jetable qui prend une journée à finir, je ne voudrais probablement pas m'inquiéter de classes de couplage ensemble.
Vous pouvez accéder au délégué de l'application à partir de tout contrôleur à l'aide de
MyDelegate* aDelegate = (MyDelegate *)[[UIApplication sharedApplication] delegate];
Cela se produit si souvent que j'ajoute toujours une méthode à myCustomappdelegate code> pour le faire pour moi (donc je n'ai pas beaucoup de casting dans mon code. [MyCustomAppDelgate appDelegate]