Как имена методов хранятся в оперативной памяти? - PullRequest
4 голосов
/ 22 июня 2011

Интересно, как имена методов хранятся в памяти в скомпилированном Objective-C?Основная причина интереса - лучшее понимание динамического набора текста.

Заранее спасибо!

1 Ответ

3 голосов
/ 22 июня 2011

Источник для среды выполнения, кстати, доступен, если вы действительно хотите углубиться.

Короче говоря; имена методов - их селекторы - хранятся как строки C в mach-o двоичного файла. То есть если у вас есть метод -(void)foo:(int)a bar:(int)b;, в mach-o будет строка селектора foo:bar:.

Информация о кодировке типа также хранится в другом сегменте файла mach-o. Эта информация о типе, для которой во время выполнения имеется API для ее получения, описывает тип возвращаемого значения и аргументы метода.

Обратите внимание, что информация о типе является неполной. Также обратите внимание, что использование информации о типе для выяснения того, как в общем случае кодировать / декодировать аргументы и возвращать значение из метода, является прямой болью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...