Я думаю, что понимание реализации Objective C может быть полезно для понимания:
Селектор - это целочисленное значение.Но его тип отличается от обычных целочисленных значений C, поэтому вы не можете их назначать.
Имя селектора, например, «methodName», - это строка, которая уникально представляет имя для этого целого числа.
В других языках и системах эта уникальная широкая строка программы называется целочисленным отображением атома (Windows) или кварка (GTK).
Objective-C хранит все функции для класса внутри хеш-таблицы.Ключ хеш-таблицы является целым числом.Библиотека времени выполнения Objective C ищет хеш-таблицу при каждом вызове метода.Без уникального целого числа этот критический поиск был бы намного медленнее.
Селектор больше не является непрозрачным указателем на структуру.В MacOSX 10.6 функция времени выполнения obj_send, которая реализует вызов метода Objective-C, использует арифметическую операцию с селектором в начале, чтобы выяснить, является ли это сообщение сохранения, освобождения, автоматического выпуска и что-то сделать в этих особых случаях.Например, просто вернитесь, если вы используете сборщик мусора.