7

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

它们似乎是三个部分。类描述、类接口和类实现。为了实例化类接口,使用类对象实例化对象的熟悉方法只有在运行时已经使用类描述实例化了您的类对象时才会发生。

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

4

1 回答 1

5

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

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

这些函数使用编译器自动嵌入的数据。他们做一些事情,例如为类查找函数构建哈希表,然后将其用于实际的消息传递。

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

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

于 2010-02-08T04:42:30.427 回答