Как время выполнения Objective C инстанцирует корневого метакласса и других описаний класса?

Я пытаюсь реализовать основной объектно-ориентированный ANSI C время выполнения и использую Objective C в качестве руководства.

Они, кажется, три части. Описание Класса, Интерфейс Класса и Реализация Класса. Для Интерфейса Класса, который инстанцируют, может только произойти знакомый метод использования Объекта класса для инстанцирования объекта, если время выполнения уже инстанцировало объекта класса с помощью описания класса.

Таким образом, все Определения классов выделяются статически на первом показе для обеспечения способности инстанцировать использования Объекта класса? Или если они выделяются динамично (на начальном вызове), как? Действительно ли это - часть цикла выполнения, или Класс является на самом деле функцией, которая определяет, было ли это уже выделено или не до передачи сообщения?

7
задан sth 8 February 2010 в 04:02
поделиться

1 ответ

Среда выполнения выполняет некоторую инициализацию с помощью функций-конструкторов, которые вызываются перед фактическим выполнением программы. Они идут по __ attribute __ ((constructor)) как в gcc, так и в clang.

В случае Objective-C некоторые из них встроены в двоичный файл компилятором. Вы должны будете включить их в свои заголовки для аналогичного эффекта.

Эти функции используют данные, автоматически внедряемые компилятором. Они делают такие вещи, как построение хэш-таблиц для функции поиска классов, которые затем используются для фактической передачи сообщений.

С другой стороны, экземпляры распределяются динамически.

Я делаю нечто подобное, так что я не знаю ничего лучше, чем это, но это настолько глубоко, насколько я копал.

5
ответ дан 7 December 2019 в 12:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: