Je pense avoir compris ce que ce délégué est censé faire. Si une classe se conforme à ce protocole, elle indique au système sous-jacent: "Hé mec, je suis le délégué de l'objet UIApplication! Dites-moi ce qui se passe, et je peux vous dire quoi faire!". Quoi, si plusieurs classes implémentent cela? Est-ce possible? Cela a-t-il un sens?Est-il logique que plusieurs classes soient conformes au protocole UIApplicationDelegate dans une application iPhone?
Répondre
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
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.
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.
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.
- 1. Où les données secondaires (telles que l'autorisation/identité) soient traitées dans une application
- 2. Existe-t-il un moyen d'obtenir une liste de toutes les classes dans une application iPhone?
- 3. Création de plusieurs versions d'une application iPhone
- 4. Méthode mysterious + initialize dans le protocole UIApplicationDelegate: Pourquoi ne puis-je pas le voir dans la documentation?
- 5. Accéder au contrôleur dans une application Cocoa
- 6. Méthode recommandée: définition de classes HTML dans une application Web
- 7. Icône non aplatie dans une application iPhone
- 8. Boucle principale dans une application iPhone
- 9. Attendez que les discussions groupées soient complétées
- 10. Utiliser l'API PayPal dans une application iPhone
- 11. UITabbarComtroller multiple dans une application iPhone
- 12. Diagramme de classes pour une application PHP sans classes
- 13. NHibernate exige que les événements soient virtuels?
- 14. Développement iPhone - Application complexe utilisant plusieurs vues/xib/nib
- 15. Map Application dans iphone
- 16. Comment connecter mon application Tomcat à Apache 2 afin que les chemins ne soient pas boiteux?
- 17. Plusieurs fenêtres ou "pages" dans une application
- 18. Plusieurs pages maîtres dans une seule application
- 19. Application Delphi et protocole (Zimbra) CalDAV
- 20. Ecriture de données au format XML dans une application
- 21. Mappage NHibernate fluide: une table, plusieurs classes
- 22. Plusieurs vues au sein d'un XIB - SDK iPhone
- 23. Plusieurs pseudo-classes CSS
- 24. Trier les valeurs avant qu'elles ne soient envoyées au réducteur
- 25. iphone application ventes internationales
- 26. Comment ajouter une application adhoc sur plusieurs iphone sur le même ordinateur dans iTunes?
- 27. Comment gérer correctement applicationWillTerminate dans une application iPhone?
- 28. Comment puis-je empêcher que les paramètres application de web.config soient hérités?
- 29. Comment définir le volume du matériel dans une application iPhone?
- 30. Quelle est la différence entre une application Web iPhone et une application iPhone?