9.10 Отправка сообщений в среде выполнения GNU Objective-C
Этот раздел относится только к среде выполнения GNU Objective-C. Если вы используете другую среду выполнения, можете пропустить его.
Реализация отправки сообщений в среде выполнения GNU Objective-C разработана с учётом переносимости и поэтому основана на стандартном C.
Отправка сообщения в среде выполнения GNU Objective-C состоит из двух отдельных этапов. Сначала вызывается функция поиска, objc_msg_lookup () (или, в случае отправки сообщений объекту super, objc_msg_lookup_super ()). Эта функция среды выполнения принимает в качестве аргументов получателя и селектор вызываемого метода; она возвращает IMP, то есть указатель на функцию, реализующую метод. Второй этап вызова метода состоит в приведении этого указателя к соответствующему типу указателя на функцию и вызове указанной функции с нужными аргументами.
Например, когда компилятор встречает вызов метода, такой как [object init], он компилирует его в вызов objc_msg_lookup (object, @selector(init)), за которым следует приведение возвращённого значения к соответствующему типу указателя на функцию, а затем вызывает её.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-15.3.0/gcc/Messaging-with-the-GNU-Objective_002dC-runtime.html