在Objective C中,如何获取元类对象?

时间:2013-12-30 04:00:01

标签: objective-c metaclass objective-c-runtime

Objective-C中,如何获取元类对象? [self class][ClassName class]都只返回Class对象。

5 个答案:

答案 0 :(得分:4)

objc_getMetaClass

编辑:根据Greg在评论中的建议进行了改进。

object_getClass([Class class]);

答案 1 :(得分:2)

object_getClass([self class])
object_getClass([ClassName class])

答案 2 :(得分:1)

您可能必须使用objective-C运行时函数object_getClass来获取类对象的类。

好的写作What is a meta-class in Objective-C详细介绍了元类。但是,在某些情况下,元类的类本身就是类。

答案 3 :(得分:1)

您是否希望获取元编程/反射的信息?

此信息可通过plain-C API获取。

与其他一些面向对象的语言不同,元类本身在信息上非常薄弱,其他C函数填充了细节。

如果您是Objective-C,C和C ++的新手,可能更容易使用Mike Ash的Objective-C wrapper library

答案 4 :(得分:-2)

您可以通过

获取对象的元类
[[self class] class]

[self class]产生一个指向Class对象的指针(即isa指针指向的对象)。由于这是一个具有类的对象,因此可以再次按照isa指针获取元类。

您可以在此博文(http://www.sealiesoftware.com/blog/class%20diagram.pdf)和http://www.sealiesoftware.com/blog/archive/2009/04/14/objc_explain_Classes_and_metaclasses.html中找到以不同方式解释的图表(another post)。很抱歉这些奇怪的链接,但我必须通过声誉过滤器......

我很想知道为什么你想要一个指向元类的指针...