Что касается обхода фреймворка и создания собственного базового объекта, все, что вам нужно сделать, - это убедиться, что первый iVar объявлен Class is_a
, и вы, вероятно, сможете получить достаточную поддержку при репликации NSObject, пройдя черезфункции времени выполнения.
Что касается избежания использования библиотеки времени выполнения и структуры, это на самом деле невозможно.Цель C (или, по крайней мере, биты, которые не являются просто C) - это динамический язык.Так что почти все, что он делает, чего не делает C, обрабатывается библиотекой времени выполнения.
Может быть возможно создать свои собственные классы и объекты, используя 32-разрядную среду выполнения и устаревший API, который не абстрагируетсяОтбросьте расположение классов, протоколов и т. д. в той степени, в которой это делает современная среда выполнения (я действительно только возился с современной средой выполнения)
Возможно, вы могли бы создать классы, добавить методы и выделить экземплярыустановка значений в структурах class_t, а затем использование malloc () для выделения, хотя даже в этом случае вы все равно будете неявно использовать функцию времени выполнения objc_msgSend каждый раз, когда используете синтаксис [obj selector]
- если только вы не хотите реализовать это вв этом случае вы только что переформулировали язык самостоятельно.«Чистое ядро» языка, который вы ищете - это просто время выполнения.