2012-11-24 1 views
0

Dans une application iOS, j'ai implémenté une logique d'application dans le AppDelegate.iOS, utilisez AppDelegate dans InterfaceBuilder, deux instances créées

Plusieurs contrôleurs vue etc. doivent appeler le AppDelegate, donc je placé le AppDelegate dans Interface Builder et a donné aux ViewControllers un IBOutlet AppDelegate* et ont établi un lien vers elle.

Dans l'application, je vois maintenant qu'il semble y avoir deux instances du AppDelegate créé, celui qui est appelé et qui reçoit toutes les notifications et celui qui est lié au ViewControllers.

donc j'ai changé mon application à utiliser dans le ViewControllers:

app_del = (AppDelegate*)[[UIApplication sharedApplication] delegate]. Ensuite, j'appelle cela appDelegate. Mais c'est aussi une instance différente de celle qui reçoit les notifications. Quelqu'un peut-il expliquer pourquoi?

Quelqu'un peut-il me dire ce qui ne va pas? Mon soupçon de googling est que l'iOS crée l'instance AppDelegate et Interface Builder ne sait pas à ce sujet et en crée un autre? Est-ce exact? Est-ce que quelqu'un peut me donner un indice sur la meilleure façon de créer/planifier des instances dans Interface Builder et dans quel ordre elles sont créées dans l'application au démarrage et dans quelle notification je peux me fonder sur le fait qu'elles ont toutes été créées?

Merci pour tous les conseils, Torsten.

Répondre

2

Votre suspicion est correcte. iOS crée une instance de votre délégué d'application lors du lancement de votre application. Cette instance est celle qui est enregistrée pour recevoir tous les événements de délégué, etc. Voir here. Tout ce que vous ajouterez à un xib ou au storyboard sera une nouvelle instance et ne fonctionnera pas.

Pour obtenir un pointeur vers le délégué de l'application, utilisez cette méthode:

[[UIApplication sharedApplication] delegate]; 

Il y a une école de pensée qui dit que vous ne devriez pas abuser le délégué de l'application en tant que données globales facilement disponibles ou méthode stocker, mais cela sort du cadre de cette réponse.

Questions connexes