Un messaggio è il nome di un selettore e i parametri per quel selettore.
Un selettore è un simbolo.
Un metodo è un pezzo di codice in una classe identificata da un selettore.
In altre parole, [foo bar: baz]
dice "invia il messaggio chiamato @selector(bar:)
con parametro baz
all'oggetto foo
. Potresti inviare quel messaggio a molti oggetti diversi.
Al contrario, il metodo bar:
per un Foo
potrebbe apparire come
-(int)bar:(int)n {
return n + 1;
}
ma per un FooTwo
potrebbe sembrare
-(int)bar:(int)n {
return n + 2;
}
(spero di avere la sintassi giusta, è passato un po 'di tempo dall'ultima volta che ho toccato Objective-C.)
Quando invii il messaggio, il kernel Objective-C invia il messaggio a foo
che decide se comprende il messaggio. Decide in base alla possibilità di trovare un metodo identificato da quel selettore.
Due metodi con lo stesso nome e un solo messaggio.
È anche possibile per un oggetto semplicemente inoltrare un particolare messaggio (o una serie di messaggi) a un altro oggetto per l'elaborazione. In questo caso, si invia un messaggio a questo oggetto proxy, che non ha metodi per abbinare quel messaggio e il proxy inoltra il messaggio al suo oggetto spostato.