Ceci est une question assez noobish - je regarde un exemple de code Cocoa et il y a des blocs @interface dans les fichiers .m ainsi que les en-têtes. Par exemple, dans l'en-tête de la classe AppDelegate, une navigation UIWindow et UI sont définies comme des variables d'instance, mais les déclarations @property sont en fait effectuées dans le fichier d'implémentation. Y a-t-il une raison fonctionnelle à cela, est-ce un choix stylistique, ou ...?Il y a @interface dans mon @implementation - pourquoi?
4
A
Répondre
7
Si vous avez juste besoin, par ex. certains délégués personnalisés pour travailler avec une autre classe en interne, il n'est pas nécessaire de publier l'interface dans l'en-tête.
Il ajoute simplement un bruit inutile et rend les interfaces disponibles qui pourraient ne pas être conçues pour un usage public ou qui ne sont pas utiles en dehors du contexte de la classe.
La même chose vaut pour les méthodes et propriétés de la classe - si vous voulez utiliser des propriétés déclarées pour vos variables d'instance sans les rendre publiques, vous n'avez pas besoin de les déclarer dans l'en-tête. Les extensions de classe vous permettent de le faire, voir par ex. "How to make a private property?".
Questions connexes
- 1. variables déclarées dans @implementation
- 2. Pourquoi il y a "Skip Navigation Links" pour mon SiteMapPath dans Firefox
- 3. Pourquoi y a-t-il des pixels supplémentaires autour de mon Android GridView?
- 4. Pourquoi y a-t-il une marge en haut de mon navigateur?
- 5. Pourquoi y a-t-il de l'espace à la droite de mon site Web? (Wordpress)
- 6. Pourquoi y a-t-il des espaces inattendus sur mon PDF en utilisant FPDF avec PHP?
- 7. Pourquoi y a-t-il un espace entre mon image et sa boîte contenant?
- 8. Pourquoi y a-t-il une bordure sur cette table?
- 9. Pourquoi il y a une différence entre "importation" et "importation *"?
- 10. Pourquoi mon interface UIWebView n'autorise-t-elle pas l'interaction utilisateur?
- 11. DWT dans Verilog (FPGA Implementation)
- 12. Y a-t-il TryResolve dans Unity?
- 13. Pourquoi `A & a = a` est-il valide?
- 14. Pourquoi mon WPF GroupBox a-t-il l'air si bizarre?
- 15. Pourquoi mon UITableView n'est-il pas défini?
- 16. safe_ptr implementation
- 17. Pourquoi mon rapport a-t-il été envoyé à l'imprimante?
- 18. dans quel but y at-il $ deferr, $ defout et pourquoi il n'y a pas de $ defin
- 19. Pourquoi mon NSMutableArray revient-il à zéro?
- 20. Y at-il déjà une comparaison interface dans le cadre
- 21. Mon dictionnaire a 9 articles encore quand Itérations avec car il y a seulement huit
- 22. Pourquoi le défilement ne fonctionne-t-il pas dans mon interface utilisateur jQuery?
- 23. Quand dois-je enregistrer mon interface COM dans HKCR \ Interface?
- 24. Y a-t-il un bug dans "tf add/recursive"?
- 25. Pourquoi un Enum implémenterait-il une interface?
- 26. Lua scripting implementation
- 27. Pourquoi mon scheduleAtFixedRate est-il ignoré dans mon code ..?
- 28. Pourquoi y a-t-il un scintillement lors de l'échange d'un panneau interne?
- 29. Y a-t-il une interface ruby au serveur de projet ms?
- 30. Y at-il une nouvelle interface qui a été introduite avec dotnet framework 4.0?
Ah, merci, ça a du sens! –