Was bedeutet class_getClassVariable () tun?
-
22-09-2019 - |
Frage
Wenn Instanzvariablen gehören in eine Instanz einer Klasse, Klassenvariablen zu einer Instanz einer Metaklasse gehören würde, sollte ich denken. Aber meine Erfahrung mit dem Objective-C metaclass sagt mir, dass dies unwahrscheinlich ist.
Ich frage mich, was class_getClassVariable
tut als zu class_getInstanceVariable
dagegen, und warum gibt es keinen class_setClassVariable
in der Laufzeit.
Lösung
Ich fand eine Diskussion über es hier: http://lists.apple.com/archives/objc- Sprache / 2008 / Feb / msg00021.html
Nein, es ist nicht möglich. Es gibt keine Compiler-Unterstützung, und es gibt keine Laufzeitunterstützung;
class_getClassVariable(cls, name)
lediglich ruftclass_getInstanceVariable(cls->isa, name)
.Wenn es möglich wäre, würde es wahrscheinlich nicht geben Ihnen eine neue Variable auf Jede Unterklasse sowieso. Objective-C metaclasses ist nicht ganz erst- Klasse genug für die gut zu funktionieren.
Andere Tipps
Die Funktion class_getClassVariable () ist nicht sinnvoll, denn es gibt nicht so etwas wie eine Klassenvariable in Objective C
Meine Vermutung ist, dass Klassenvariablen, die von der Laufzeit unterstützt werden, aber nicht durch die Sprache.