11

Si las variables de instancia pertenecen a una instancia de una clase, las variables de clase pertenecerían a una instancia de una metaclase, creo. Pero mi experiencia con la metaclase Objective-C me dice que esto es poco probable.¿Qué hace class_getClassVariable()?

Me pregunto qué class_getClassVariable hace frente a class_getInstanceVariable, y por qué no hay un class_setClassVariable en el tiempo de ejecución.

Respuesta

13

me encontré con una discusión sobre ello aquí: http://lists.apple.com/archives/objc-language/2008/Feb/msg00021.html

No, no es posible. No hay soporte de compilador, y no hay soporte de tiempo de ejecución ; class_getClassVariable(cls, name) meramente llama a class_getInstanceVariable(cls->isa, name).

Si fuera posible, probablemente no le daría una nueva variable en cada subclase de todos modos. Las metaclases de Objective-C no son lo primero- clase suficiente para que funcionen bien.

1

La función class_getClassVariable() no tiene sentido, porque no hay tal cosa como una variable de clase en Objective C.

Mi suposición es que las variables de clase son compatibles con el tiempo de ejecución, pero no por el idioma.