Next: Le type des arguments Up: La gestion des messages Previous: Sélecteurs (selector)

Changer le message en cours d'exécution

Les méthodes perform:,perform:with:, et perform:with:with:, définies dans la classe Object, prennent des SEL comme premier paramètre. Ces trois méthodes sont parfaitement intégrées dans le système de messages. Par exemple:

[voisin perform:@selector(discute:) with:unAmis];

est équivalent à :

[voisin discute: unAmis];

Ces méthodes permettent de faire varier le message pendant l'exécution, comme il est possible de faire varier l'objet receveur. Ainsi une variable peut être utilisé à la fois pour le receveur et le sélecteur.

id cible = [unObjet donneLe Receveur]; SEL action = [unObjet donneLeSelecteur]; [cible perform:action];

Dans cet exemple deux méthodes fictives sélectionnent en cours d'exécution, d'une part un receveur cible, d'autre part une action. En suite ce receveur reçoit le message action grâce à au message perform:.

Remarque: les méthodes perform retourne des id. Si la méthode exécuté retourne un autre type il faut réaliser une coercition sur la valeur retournée. Mais attention ce n'est pas valable pour tous les types, la méthode doit renvoyer un type compatible avec les pointeurs.



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