Из документации Apple Objective-C выделены жирным шрифтом соответствующие части:
Возвращение метода и типы параметров
Подпрограмма обмена сообщениями имеет доступ только к реализациям методачерез селекторы, поэтому он обрабатывает все методы одинаковым селектором.Он обнаруживает тип возврата метода и типы данных его параметров из селектора. Поэтому, за исключением сообщений, отправляемых статически типизированным получателям, динамическое связывание требует, чтобы все реализации методов с одинаковыми именами имели одинаковый тип возврата и одинаковые типы параметров. (Статически типизированные приемники являются исключением из этого правила, посколькуКомпилятор может узнать о реализации метода по типу класса.)
Хотя методы класса и методы экземпляров с одинаковыми именами представлены одним и тем же селектором, они могут иметь разные типы параметров и возвращаемые типы.
Я читал этот блок снова и снова, но я не могу пройти мимо того, что кажется противоречием.Во-первых, в нем говорится, что все реализации методов с одинаковыми именами должны иметь одинаковый тип возвращаемого значения и типы параметров из-за динамического связывания.
Поскольку он обрабатывает все методы одинаковым селектором, означает ли это, что независимо отмного разных объектов у меня есть, если у них у всех есть метод EatCake (), то все они будут использовать один и тот же селектор для EatCake?Если так, то почему они должны иметь одинаковые параметры и возвращаемый тип?
Тогда в следующей части говорится, что, хотя они представлены одним и тем же селектором, они могут иметь разные типы параметров и возвращаемые типы.Так что теперь я в полном замешательстве, я думал, что просто сказал, что это не тот случай.
Я не ожидаю, что это ошибка, я ожидаю, что я просто не понимаю, в чем разница между этими двумязаявления.
Может кто-нибудь объяснить это для меня?