Uma mensagem é o nome de um seletor e os parâmetros para esse seletor.
Um seletor é um símbolo.
Um método é um pedaço de código em uma classe identificada por um seletor.
Em outras palavras, [foo bar: baz]
diz "envie a mensagem chamada @selector(bar:)
com parâmetro baz
para objeto foo
. Você pode enviar essa mensagem para muitos objetos diferentes.
Por outro lado, o método bar:
para um Foo
pode parecer
-(int)bar:(int)n {
return n + 1;
}
mas por um FooTwo
pode parecer
-(int)bar:(int)n {
return n + 2;
}
(Espero ter a sintaxe correta; já faz um tempo desde que toquei o Objective-C pela última vez.)
Quando você envia a mensagem, o kernel Objective-C despacha a mensagem para a foo
qual decide se entende a mensagem. Ele decide isso com base em se pode encontrar um método identificado por esse seletor.
Dois métodos com o mesmo nome e uma mensagem.
Também é possível que um objeto simplesmente encaminhe uma mensagem específica (ou conjunto de mensagens) para outro objeto para processamento. Nesse caso, você envia uma mensagem para esse objeto proxy, que não possui métodos para corresponder a essa mensagem , e o proxy encaminha a mensagem para seu objeto agrupado.