11

如果实例变量属于一个类的实例,那么类变量将属于元类的一个实例,我应该这样想。但是我对Objective-C元类的经验告诉我这不太可能。class_getClassVariable()是做什么的?

我想知道class_getClassVariable做什么,而不是class_getInstanceVariable,以及为什么在运行时没有class_setClassVariable

回答

13

我发现了一个讨论有关在这里: http://lists.apple.com/archives/objc-language/2008/Feb/msg00021.html

不,这是不可能的。没有编译器支持,并且没有运行支持; class_getClassVariable(cls, name)仅仅调用 class_getInstanceVariable(cls->isa, name)

如果可能的话,它可能不会给你每个子类的新变量 。 Objective-C的元类并不是第一个,它足以让它运行良好。

1

的class_getClassVariable()函数没有任何意义,因为有作为一类变量在Objective C.

我的猜测没有这样的事情是,类变量,由运行时支持,但不是通过语言。