8.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-4.9.4/gcc/Messaging-with-the-GNU-Objective-C-runtime.html