11

Si les variables d'instance appartiennent à une instance d'une classe, les variables de classe appartiendraient à une instance d'une métaclasse, je devrais penser. Mais mon expérience avec la métaclasse Objective-C me dit que c'est peu probable.Que fait class_getClassVariable()?

Je me demande ce que fait class_getClassVariable par opposition à class_getInstanceVariable, et pourquoi il n'y a pas de class_setClassVariable dans le temps d'exécution.

Répondre

13

J'ai trouvé une discussion à ce sujet ici: http://lists.apple.com/archives/objc-language/2008/Feb/msg00021.html

Non, il est impossible. Il n'y a pas de support du compilateur, et il n'y a pas de support d'exécution ; class_getClassVariable(cls, name) appelle simplement class_getInstanceVariable(cls->isa, name).

Si cela était possible, cela ne vous donnerait probablement pas une nouvelle variable sur chaque sous-classe de toute façon. Les métaclasses d'Objective-C ne sont pas tout à fait d'abord la classe suffisante pour que cela fonctionne bien.

1

La fonction class_getClassVariable() n'a pas de sens, parce qu'il n'y a pas une telle chose comme une variable de classe en Objective C.

Je pense que les variables de classe sont pris en charge par le moteur d'exécution, mais pas par la langue.