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 una pieza de código en una clase identificada por un selector.
En otras palabras, [foo bar: baz]
dice "envía el mensaje llamado @selector(bar:)
con el parámetro baz
al objeto foo
. Puedes enviar ese mensaje a muchos objetos diferentes.
Por el contrario, el método bar:
para un Foo
podría verse como
-(int)bar:(int)n {
return n + 1;
}
pero para FooTwo
podría verse como
-(int)bar:(int)n {
return n + 2;
}
(Espero tener la sintaxis correcta; ha pasado un tiempo desde que toqué Objective-C por última vez)
Cuando envía el mensaje, el kernel de Objective-C envía el mensaje a foo
, que decide si entiende 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 un 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 coincidir con ese mensaje , y el proxy reenvía el mensaje a su objeto envuelto.