Что делает class_getClassVariable()?

Если переменные экземпляра принадлежат экземпляру класса, переменные класса будут принадлежать экземпляру метакласса, я должен подумать. Но мой опыт работы с метаклассом Objective-C говорит мне, что это маловероятно.

Мне интересно, что class_getClassVariable делает в отличие от class_getInstanceVariable, и почему во время выполнения нет class_setClassVariable.

Ответ 1

Я нашел здесь обсуждение: http://lists.apple.com/archives/objc-language/2008/Feb/msg00021.html

Нет, это невозможно. Нет поддержки компилятора, и нет поддержка времени выполнения; class_getClassVariable(cls, name) просто вызывает class_getInstanceVariable(cls->isa, name).

Если бы это было возможно, это, скорее всего, не дало бы вам новую переменную на каждый подкласс в любом случае. Метаданные Objective-C не являются первыми, достаточно класс, чтобы это хорошо работало.

Ответ 2

Функция class_getClassVariable() не имеет смысла, поскольку в Objective C. нет такой вещи, как переменная класса.

Я предполагаю, что переменные класса поддерживаются средой выполнения, но не языком.