2010-05-11 2 views
4

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?

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?".

+0

Ah, merci, ça a du sens! –

Questions connexes