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 il parametro baz
all'oggetto foo
. È possibile inviare quel messaggio a molti oggetti diversi.
Al contrario, potrebbe sembrare il metodo bar:
per unFoo
-(int)bar:(int)n {
return n + 1;
}
ma per un FooTwo
aspetto simile
-(int)bar:(int)n {
return n + 2;
}
(Spero di avere la sintassi corretta; è passato un po 'di tempo dall'ultima volta che ho toccato Objective-C.)
Quando si invia il messaggio, il kernel Objective-C invia il messaggio a foo
cui decide se capisce il messaggio. Decide questo in base alla possibilità di trovare un metodo identificato da quel selettore.
Due metodi con lo stesso nome e un messaggio.
È anche possibile che un oggetto inoltri semplicemente un determinato messaggio (o set 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.