Next: Comment utiliser les catégories Up: Catégories Previous: Catégories

Additions à une Classe

La déclaration d'une catégorie est similaire à une déclaration d'interface de classe, sauf que la super classe est remplacée par par le nom de la catégorie entre parenthèses. La catégorie doit importer le fichier d'interface de la classe:

#import "ClassName.h"

@interface ClassName ( Category ) déclaration des nouvelles méthodes @end

Noter bien que la catégories n'ajoute pas de nouvelles variables d'instance, elle ne contient que des déclarations de méthodes. Par contre toutes les variables d'instance accessibles par la classe sont accessibles aux méthodes de la catégorie. Ce qui inclut toutes les variables d'instance définie dans la classe. Le fichier d'implémentation doit évidement importer sont propre fichier d'interface. En supposant que le fichier d'interfaces et le fichier d'implémentation sont nommés d'après le nom de la catégorie, un fichier d'implémentation se présente sous la forme suivante:

/* Category.m */ #import "Category.h"

@implémentation ClassName ( Category ) définition des méthodes @end

Les méthodes ajoutées par une catégorie peuvent soit étendre les fonctionnalités d'une classe, soit cours- circuiter les méthodes héritées par la classe et même cours-circuiter les méthodes déclarées dans la classe mais par contre ce n'est pas possible entre deux catégories (en effet comment choisir entre les deux méthodes). Attention une catégorie n'est pas un substitut pour une sous-classe. (Elles ont plus d'utilité comme outil d'extention de classe, plutôt que de redéfinition de classe). Il est plus prudent que les catégories ne redéfinissent pas les méthodes définie dans la classe, et une classe ne doit pas définir plusieurs fois une même méthode. Remarque: Quand une méthode de catégorie recouvre une méthode de classe il est possible de faire appel au méthode s définie dans la super classe (grâce à super) mais la méthode de la classe qui a été recouverte n'est plus accessible !



Dominique REVUZ
Vendredi 21 février 1997 17:27:12
Une Bug Un mail Merci