Objective-C有an amazing API用于读取和更改自己的运行时环境,但我只能从Apple找到此API的文档。 API仅在运行Darwin OS的计算机上可用,或者它实际上是Objective-C的一部分吗?
如果它特定于达尔文,至少在GNUstep framework?
中可用具体来说,我正在编写基于XSD的序列化器/反序列化器,我希望能够基于在运行时解析的XSD文档创建/修改类定义,以使框架更直观。
答案 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