Objective-C运行时如何实例化根元类和其他类描述?

我正在尝试实现一个基本的面向对象的ANSI C运行时并使用Objective-C作为指导。

它们似乎分为三部分。 类描述,类接口和类实现。 为了实例化类接口,只有运行时已使用类描述实例化类对象时,才能使用熟悉的使用Class对象实例化对象的方法。

那么在第一次运行时是否静态分配了所有类定义,以提供使用Class对象进行实例化的能力? 或者如果它们是动态分配的(在初始呼叫时),如何? 它是运行循环的一部分还是Class实际上是一个函数,它确定在转发消息之前是否已经分配了它?

运行时通过在实际程序执行之前调用的构造函数进行一些初始化。 它们在gcc和clang中都通过__attribute__((constructor))

在Objective-C的情况下,编译器将其中一些嵌入到二进制文件中。 您必须将它们包含在标题中以获得类似的效果。

这些函数使用编译器自动嵌入的数据。 它们执行的操作包括为类查找函数构建哈希表,然后将其用于实际的消息传递。

另一方面,实例是动态分配的。

我正在做类似的事情,所以我真的不知道比这更好,但这和我挖的一样深。