47 votes

À quoi sert la déclaration @interface vide dans les fichiers .m ?

J'ai commencé un nouveau projet iOS 5 et j'ai remarqué quelque chose de nouveau en haut de chaque fichier .m.

#import "HomeViewController.h"

@interface HomeViewController ()

@end

@implementation HomeViewController
@synthesize ...
  • Cette @interface ... supplémentaire est-elle nécessaire si j'ai un fichier .h séparé ?
  • Pourquoi cela n'apparaissait-il pas dans les projets antérieurs à iOS 5 ?
  • Puis-je l'utiliser au lieu d'avoir un fichier .h séparé ?
  • Quelle est la meilleure pratique à adopter pour l'avenir ?

79voto

sch Points 20812

C'est un extension de classe . Vous pouvez l'utiliser pour faire des déclarations que vous ne voulez pas voir figurer dans le fichier d'aide. .h fichier.

Cette méthode était utilisée par de nombreux développeurs, même avant, qui ajoutaient manuellement l'extension dans le fichier .m fichier. Je suppose donc qu'Apple a inclus ce point dans le modèle parce qu'il est largement utilisé et considéré comme une bonne pratique.

En fait, le .h ne doit être utilisé que pour faire des déclarations qui seront utilisées dans d'autres fichiers. Vous pouvez être amené à déclarer des propriétés, des méthodes ou des constantes qui ne seront utilisées qu'à l'intérieur du fichier .m fichier. Pour ces déclarations, il est préférable de les faire dans l'extension de la classe.

Donc, pour répondre à vos questions :

  • Cette @interface ... supplémentaire est-elle nécessaire si j'ai un fichier .h séparé ?

Non, ce n'est pas obligatoire mais c'est une bonne pratique.

  • Pourquoi cela n'apparaissait-il pas dans les projets antérieurs à iOS 5 ?

Même s'il s'agit d'une pratique courante, elle n'a pas été incluse dans le modèle.

  • Puis-je l'utiliser au lieu d'avoir un fichier .h séparé ?

Non. L'extension de classe ne remplace pas l'extension de classe. .h où vous devez déclarer l'élément "public" de votre classe.

  • Quelle est la meilleure pratique pour l'avenir ?

Vous devez placer dans l'extension de classe toutes les déclarations qui n'ont pas besoin d'être visibles en dehors de la classe .m fichier.

11voto

Jay Slupesky Points 1209

La section interface du fichier d'implémentation vous permet de déclarer des variables, des propriétés et des méthodes qui sont privées, ce qui signifie qu'elles ne seront pas vues par d'autres classes.

Non, ce n'est pas du tout nécessaire. Mais je l'utilise autant que possible et ne rends publiques que les choses que les autres classes ont besoin de voir.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X