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

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

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

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

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

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

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

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

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

相关文章
相关标签/搜索