Источник для среды выполнения, кстати, доступен, если вы действительно хотите углубиться.
Короче говоря; имена методов - их селекторы - хранятся как строки C в mach-o двоичного файла. То есть если у вас есть метод -(void)foo:(int)a bar:(int)b;
, в mach-o будет строка селектора foo:bar:
.
Информация о кодировке типа также хранится в другом сегменте файла mach-o. Эта информация о типе, для которой во время выполнения имеется API для ее получения, описывает тип возвращаемого значения и аргументы метода.
Обратите внимание, что информация о типе является неполной. Также обратите внимание, что использование информации о типе для выяснения того, как в общем случае кодировать / декодировать аргументы и возвращать значение из метода, является прямой болью.