Objective-C 中的 super 到底是什么?

发布于 2024-09-06 11:28:25 字数 71 浏览 6 评论 0原文

据我所知,它是指向超类的指针。它与超类是硬连接的,并且不是在运行时动态计算出来的。想更详细地了解...

有人吗?

As far as I know, it's a pointer to the superclass. It's hard-wired with the superclass, and not dynamically figured out at runtime. Would like to know it more in detail...

Anyone?

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

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

发布评论

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

评论(4

天暗了我发光 2024-09-13 11:28:25

super

本质上,它允许您使用当前类的超类的实现。

对于 坚韧 Objective-C运行时的详细信息

[super message]含义如下:

当遇到方法调用时,
编译器生成对以下之一的调用
函数 objc_msgSend,
objc_msgSend_stret, objc_msgSendSuper,
或 objc_msgSendSuper_stret。留言
发送到对象的超类(使用
super 关键字)使用发送
objc_msgSendSuper;其他消息是
使用 objc_msgSend 发送。方法
将数据结构作为返回值
使用 objc_msgSendSuper_stret 发送
和 objc_msgSend_stret。

所以是的,它是静态的,并且不是在运行时确定的。

super

Essentially, it allows you to use the implementations of the current class' superclass.

For the gritty details of the Objective-C runtime:

[super message] has the following meaning:

When it encounters a method call, the
compiler generates a call to one of
the functions objc_msgSend,
objc_msgSend_stret, objc_msgSendSuper,
or objc_msgSendSuper_stret. Messages
sent to an object’s superclass (using
the super keyword) are sent using
objc_msgSendSuper; other messages are
sent using objc_msgSend. Methods that
have data structures as return values
are sent using objc_msgSendSuper_stret
and objc_msgSend_stret.

So yes, it is static, and not determined at runtime.

奈何桥上唱咆哮 2024-09-13 11:28:25

它是一个与 self 等效的关键字,但从超类的方法表开始其消息调度搜索。

It's a keyword that's equivalent to self, but starts its message dispatch searching with the superclass's method table.

俏︾媚 2024-09-13 11:28:25

super 不是指向类的指针。 Super 是 self,但当在消息表达式中使用时,它的意思是“查找从超类的方法表开始的实现”。

super is not a pointer to a class. Super is self, but when used in a message expression, it means "look for an implementation starting with the superclass's method table."

岁月静好 2024-09-13 11:28:25

这些博客文章关于什么是元类?< /a>、获取子类类和元类可能会让您了解其内部结构。

These blog postings on what is a meta class?, getting subclasses and classes and metaclasses may give you some insight on the internals of this.

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