Что делает 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. нет такой вещи, как переменная класса.
Я предполагаю, что переменные класса поддерживаются средой выполнения, но не языком.