11

Wenn Instanzvariablen zu einer Instanz einer Klasse gehören, würden Klassenvariablen zu einer Instanz einer Metaklasse gehören, sollte ich denken. Aber meine Erfahrung mit der Objective-C-Metaklasse sagt mir, dass dies unwahrscheinlich ist.Was macht class_getClassVariable()?

Ich frage mich, was class_getClassVariable im Gegensatz zu class_getInstanceVariable tut, und warum es keine class_setClassVariable in der Laufzeit gibt.

Antwort

13

fand ich eine Diskussion über es hier: http://lists.apple.com/archives/objc-language/2008/Feb/msg00021.html

Nein, es ist nicht möglich. Es gibt keine Compiler-Unterstützung, und es gibt keine Runtime-Unterstützung; class_getClassVariable(cls, name) ruft nur class_getInstanceVariable(cls->isa, name).

Wenn es möglich wäre, würde es wahrscheinlich keine neue Variable auf jeder Unterklasse sowieso geben. Die Metaklassen von Objective-C stehen nicht ganz an erster Stelle - Klasse genug, um gut zu funktionieren.

1

Die class_getClassVariable() Funktion ist nicht sinnvoll, weil es als Klassenvariable in Objective C.

Meiner Vermutung nicht so etwas ist, dass Klassenvariablen von der Laufzeit unterstützt werden, aber nicht durch die Sprache.