【发布时间】:2014-01-16 23:04:02
【问题描述】:
在Objective-C中,如何获取元类对象? [self class] 和 [ClassName class] 都只返回 Class 对象。
【问题讨论】:
标签: objective-c metaclass objective-c-runtime
在Objective-C中,如何获取元类对象? [self class] 和 [ClassName class] 都只返回 Class 对象。
【问题讨论】:
标签: objective-c metaclass objective-c-runtime
【讨论】:
object_getClass([self class])
object_getClass([ClassName class])
【讨论】:
您可能必须使用 Objective-C 运行时函数 object_getClass 来获取类对象的类。
一篇好的文章What is a meta-class in Objective-C 详细介绍了元类。但是,在某些情况下,元类的类就是类本身。
【讨论】:
您是否希望获取用于元编程/反射的信息?
此信息可通过plain-C API 获得。
与其他一些面向对象的语言不同,元类本身的信息非常少,其他 C 函数填充了细节。
如果您是 Objective-C、C 和 C++ 的新手,使用 Mike Ash 的 Objective-C wrapper library 可能会更容易。
【讨论】:
您可以通过
获取对象的元类[[self class] class]
[self 类] 产生一个指向 Class 对象的指针(即 isa 指针指向的内容)。由于这也是一个带有类的对象,所以可以再次按照 isa 指针获取元类。
您可以在此博客文章 (http://www.sealiesoftware.com/blog/archive/2009/04/14/objc_explain_Classes_and_metaclasses.html) 和 another post 中找到一个图表 (http://www.sealiesoftware.com/blog/class%20diagram.pdf),以不同方式解释它。对不起,奇怪的链接,但我不得不通过声誉过滤器......
我很想知道你为什么想要一个指向元类的指针...
【讨论】: