11

インスタンス変数がクラスのインスタンスに属している場合、クラス変数はメタクラスのインスタンスに属していると思います。しかし、Objective-Cメタクラスでの私の経験から、これはありそうもないことがわかります。

class_getClassVariableとは対照的に何が行われるclass_getInstanceVariableのか、なぜclass_setClassVariableランタイムにがないのか疑問に思っています。

4

2 に答える 2

13

ここでそれに関する議論を見つけました: http://lists.apple.com/archives/objc-language/2008/Feb/msg00021.html

いいえ、それは不可能です。コンパイラ サポートはなく、ランタイム サポートもありません。class_getClassVariable(cls, name)単に呼び出します class_getInstanceVariable(cls->isa, name)

可能であれば、とにかく各サブクラスで新しい変数を提供しない可能性があります。Objective-C のメタクラスは、それがうまく機能するのに十分なファーストクラスではありません。

于 2009-12-30T16:28:19.400 に答える
1

Objective C にはクラス変数のようなものがないため、class_getClassVariable() 関数は意味がありません。

私の推測では、クラス変数はランタイムでサポートされていますが、言語ではサポートされていません。

于 2009-12-30T15:57:45.503 に答える