Un mensaje es el nombre de un selector y los parámetros para ese selector.
Un selector es un símbolo.
Un método es un fragmento de código en una clase identificada por un selector.
En otras palabras, [foo bar: baz]
dice "envíe el mensaje llamado @selector(bar:)
con el parámetro baz
al objeto foo
. Puede enviar ese mensaje a muchos objetos diferentes.
Por el contrario, el método bar:
para un Foo
podría verse así
-(int)bar:(int)n {
return n + 1;
}
pero por un momento FooTwo
podría parecer
-(int)bar:(int)n {
return n + 2;
}
(Espero tener la sintaxis correcta; ha pasado un tiempo desde la última vez que toqué Objective-C).
Cuando envía el mensaje, el núcleo Objective-C envía el mensaje al foo
que decide si comprende el mensaje. Decide esto en función de si puede encontrar un método identificado por ese selector.
Dos métodos con el mismo nombre y un mensaje.
También es posible que un objeto simplemente reenvíe un mensaje particular (o conjunto de mensajes) a otro objeto para su procesamiento. En este caso, envía un mensaje a este objeto proxy, que no tiene métodos para que coincida con ese mensaje , y el proxy reenvía el mensaje a su objeto envuelto.