Un message est le nom d'un sélecteur et les paramètres de ce sélecteur.
Un sélecteur est un symbole.
Une méthode est un morceau de code dans une classe identifiée par un sélecteur.
En d'autres termes, [foo bar: baz]
dit "envoyer le message appelé @selector(bar:)
avec le paramètre baz
à l'objet foo
. Vous pouvez envoyer ce message à de nombreux objets différents.
En revanche, la méthode bar:
pour un Foo
pourrait ressembler à
-(int)bar:(int)n {
return n + 1;
}
mais pour un FooTwo
pourrait ressembler
-(int)bar:(int)n {
return n + 2;
}
(J'espère avoir la bonne syntaxe; cela fait un moment que je n'ai pas touché Objective-C pour la dernière fois.)
Lorsque vous envoyez le message, le noyau Objective-C envoie le message à foo
qui décide s'il comprend le message. Il décide cela selon qu'il peut trouver une méthode identifiée par ce sélecteur.
Deux méthodes avec le même nom et un message.
Il est également possible pour un objet de simplement transmettre un message particulier (ou un ensemble de messages) à un autre objet pour traitement. Dans ce cas, vous envoyez un message à cet objet proxy, qui n'a aucune méthode pour faire correspondre ce message , et le proxy transfère le message à son objet encapsulé.