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 bazpara objeto foo. Você pode enviar essa mensagem para muitos objetos diferentes.
Por outro lado, o método bar: para um Foopode parecer
-(int)bar:(int)n {
return n + 1;
}
mas por um FooTwopode 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 fooqual 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.