2009-04-09 2 views

Répondre

8

Bien que vous puissiez implémenter plusieurs classes conformes au protocole UIApplicationDelegate, une seule, la première, recevrait ces messages. L'implémentation d'un protocole pour créer un délégué n'est qu'une partie de l'équation. Ce délégué doit ensuite être enregistré avec le code qui génère les messages et ces systèmes ne prennent généralement en charge qu'un seul délégué.

Dans le cas d'UIApplication, vous pouvez modifier le délégué à l'aide de la propriété 'delegate' dans la classe partagée UIApplication, mais cela remplacera le délégué d'origine, sans en ajouter un autre.

Si vous devez diffuser des messages de niveau UIApplication à d'autres systèmes, vous devez ajouter cette fonctionnalité à votre délégué existant. Juste conforme au protocole ne définit pas votre objet en tant que délégué, vous devez le faire explicitement dans la plume ou dans le code

5

Vous pouvez implémenter plusieurs classes qui adoptent le protocole UIApplicationDelegate, mais une seule peut être le délégué réel à un moment donné. Il est défini par [UIApplication sharedApplication].delegate, qui est normalement configuré par le fichier NIB principal par une connexion de sortie.

4

Comme déjà mentionné, un seul objet peut être un délégué à la fois. La présence de plusieurs délégués peut sembler logique dans certains cas. Par exemple, si vous avez une vue de table qui affiche deux ensembles de données, vous pouvez créer deux objets delegate et datasource pour cela, et passer de l'un à l'autre selon les besoins. Cela n'a probablement pas de sens pour le délégué de l'application, car le code est assez spécifique. Gardez à l'esprit que parfois un objet envoie des notifications en plus de l'appel des méthodes déléguées. La plupart du temps, il semble que ce soit la même chose, car l'objet va automatiquement inscrire votre délégué à la notification s'il inclut une certaine signature de méthode. La principale différence est que d'autres objets que le délégué peuvent également s'abonner à ces notifications, vous pouvez donc les connecter à plusieurs objets à la fois.

1

Comme Daniel Dickson a déclaré:

Vous pouvez implémenter plusieurs classes qui adoptent le protocole UIApplicationDelegate, mais un seul peut être le délégué réel à un moment donné. Il est défini par [UIApplication sharedApplication] .delegate, qui est normalement configuré par le fichier NIB principal par une connexion de sortie.

... mais sachez que vous pouvez les échanger au moment de l'exécution si vous en avez besoin. J'ai récemment envisagé d'utiliser cette technique pour fusionner deux applications développées par différentes parties qui ne pouvaient pas partager le code source ou le refactor; encore besoin de co-localiser sous une seule icône sur l'appareil.

Questions connexes