Скомпилировать код Objective-C в C - PullRequest
0 голосов
/ 05 февраля 2011

Есть ли способ компилировать код Objective C в C?Мне было бы интересно узнать, как различные вещи действительно представлены под крышкой, но мне неудобно иметь дело со сборкой.

Например, я читал в книге, что методы былипредставлены как функции с уникальными именами, основанными на имени класса и метода, и что тип id определен как структура с одним членом (isa).Можно ли это просмотреть?

Ответы [ 2 ]

4 голосов
/ 05 февраля 2011

Я где-то читал, что Objective-C когда-то был реализован как препроцессор над C, но это уже не так. Хотя среда выполнения доступна в C, я не думаю, что есть способ генерировать код C из кода Objective-C с помощью современных компиляторов (хотя это, вероятно, технически выполнимо, если вещи не становятся слишком уродливыми).

Однако есть несколько реликвий этого прошлого. Если вы щелкните правой кнопкой мыши id и выберите Перейти к определению , вы увидите typedef. Если вы отладите свой код и посмотрите на структуру объекта, вы увидите, что его первое поле всегда является структурой суперкласса, и что оно проходит вплоть до isa. А Apple предоставляет документацию по среде выполнения , которая может дать вам некоторое представление о том, как все это работает.

1 голос
/ 05 февраля 2011

Если вы скомпилируете без оптимизации и найдете подходящий декомпилятор C, вы сможете получить частично полезные результаты.

Почти все на языке Objective C может быть представлено в коде C с вызовами среды выполнения Objective C с использованием "скрытых" элементов структуры.

(Кто-нибудь знает, существует ли какая-либо из ранних реализаций макропроцессора для более старых версий языка?)

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