class_getClassVariable() 的作用是什么?

发布于 2024-08-16 18:57:47 字数 218 浏览 7 评论 0原文

我认为,如果实例变量属于类的实例,那么类变量将属于元类的实例。但我使用 Objective-C 元类的经验告诉我,这是不可能的。

我想知道 class_getClassVariableclass_getInstanceVariable 相比有何作用,以及为什么运行时中没有 class_setClassVariable

If instance variables belong to an instance of a class, class variables would belong to an instance of a metaclass, I should think. But my experience with the Objective-C metaclass tells me that this is unlikely.

I'm wondering what class_getClassVariable does as opposed to class_getInstanceVariable, and why there is not a class_setClassVariable in the runtime.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

伴随着你 2024-08-23 18:57:47

我在这里找到了关于它的讨论:
http://lists.apple.com/archives/objc-语言/2008/Feb/msg00021.html

不,这是不可能的。没有编译器支持,也没有
运行时支持; class_getClassVariable(cls, name) 仅调用
class_getInstanceVariable(cls->isa, name)

如果可能的话,它可能不会给你一个新的变量
无论如何,每个子类。 Objective-C 的元类并不是最先的——
类足以使其正常工作。

I found a discussion about it here:
http://lists.apple.com/archives/objc-language/2008/Feb/msg00021.html

Nope, it's not possible. There is no compiler support, and there is no
runtime support; class_getClassVariable(cls, name) merely calls
class_getInstanceVariable(cls->isa, name).

If it were possible, it likely would not give you a new variable on
each subclass anyway. Objective-C's metaclasses are not quite first-
class enough for that to work well.

森罗 2024-08-23 18:57:47

class_getClassVariable() 函数没有意义,因为 Objective C 中没有类变量之类的东西。

我的猜测是运行时支持类变量,但语言不支持。

The class_getClassVariable() function doesn't make sense, because there's no such thing as a class variable in Objective C.

My guess is that class variables are supported by the runtime, but not by the language.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文