Next: Changer le message en Up: La gestion des messages Previous: La gestion des messages

Sélecteurs (selector)

Pour des raisons d'efficacité les noms ASCII ne sont pas utilisés comme sélecteurs de méthodes dans le code compilé. A leurs place, le compilateur et le noyau d'exécution utilisent une table de conversion qui associe à chaque nom ASCII de méthode un unique identifieur qui servira de représentant de la méthode. Ces représentants sont du type SEL, ce qui permet de les différencier des autres types de données. Un sélecteur valide n'est jamais nul.

Un représentant contient des champs définis par le compilateur qui aide le noyau d'exécution. Il est donc impératif que vous laissiez au système le travail de définir la valeur de ces sélecteurs. La directive @selector() permet de référer le sélecteur compilé dans du source ObjectiveC, plutôt que d'utiliser le nom complet. Dans l'exemple suivant le représentant de moveTo:: est placé dans la variable action:

SEL action; action = @selector(moveTo::);

Il est plus efficace de placer les représentants dans des variables de type SEL à la compilation avec la directive @selector() mais parfois il est nécessaire de convertir en cours d'exécution une chaîne en représentant. Ceci peut être fait avec la fonction sel_getUid() :

action = sel_getUid("moveTo::");

Cette fonction et d'autre fonction du noyau d'exécution sont décrite dans le manuel général.



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