Сообщение - это имя селектора и параметры этого селектора.
Селектор это символ.
Метод - это фрагмент кода в классе, идентифицируемый селектором.
Другими словами, [foo bar: baz]
говорится «отправить сообщение, вызванное @selector(bar:)
с параметром, baz
к объекту foo
. Вы можете отправить это сообщение множеству различных объектов.
Напротив, метод bar:
для Foo
может выглядеть
-(int)bar:(int)n {
return n + 1;
}
но FooTwo
может выглядеть
-(int)bar:(int)n {
return n + 2;
}
(Я надеюсь, что у меня есть правильный синтаксис; прошло много времени с тех пор, как я последний раз касался Objective-C.)
Когда вы отправляете сообщение, ядро Objective C отправляет сообщение, foo
которое решает, понимает ли оно сообщение. Он решает это на основе того, может ли он найти метод, идентифицированный этим селектором.
Два метода с одинаковым именем и одно сообщение.
Для объекта также возможно просто переслать определенное сообщение (или набор сообщений) другому объекту для обработки. В этом случае вы отправляете сообщение этому прокси-объекту, у которого нет методов для сопоставления с этим сообщением , и прокси-сервер пересылает сообщение в свой обернутый объект.