Objective-C运行时API是否在Darwin之外可用?

时间:2016-03-28 01:27:59

标签: objective-c runtime portability darwin

Objective-C有an amazing API用于读取和更改自己的运行时环境,但我只能从Apple找到此API的文档。 API仅在运行Darwin OS的计算机上可用,或者它实际上是Objective-C的一部分吗?

如果它特定于达尔文,至少在GNUstep framework

中可用

编辑 - 我正在寻找什么

具体来说,我正在编写基于XSD的序列化器/反序列化器,我希望能够基于在运行时解析的XSD文档创建/修改类定义,以使框架更直观。

2 个答案:

答案 0 :(得分:1)

我所见过的所有Objective-C版本都有一些设施可以在运行时进行内省和/或动态生成类。

每个不同的运行时的细节会有所不同,并且它们可能并非都具有功能奇偶校验(例如;苹果运行时具有块并且没有被移植到任何地方)。

答案 1 :(得分:1)

您更新的问题表明您特别希望添加/修改类定义。

在我们发现的评论中,我们发现libobjc2是GUNStep的一部分,并且它的Objective-C Compiler and Runtime FAQ包含方法:

Class objc_allocateClassPair(Class superclass, const char *name, size_t extraBytes);

用于创建类 - 这看起来与Cocoa中的相同。

您可能会发现Mike Ash的runtime.h有帮助。

HTH