Среда выполнения выполняет некоторую инициализацию с помощью функций конструктора, которые вызываются до фактического выполнения программы. Они идут на __attribute__((constructor))
в gcc и clang.
В случае Objective-C некоторые из них встроены в двоичный файл компилятором. Вам придется включить их в заголовки для аналогичного эффекта.
Эти функции используют данные, автоматически внедренные компилятором. Они делают такие вещи, как создание хеш-таблиц для функции поиска классов, которые затем используются для фактической передачи сообщений.
Экземпляры, с другой стороны, распределяются динамически.
Я делаю что-то похожее, так что я не знаю намного лучше, но это так глубоко, как я вырыл.