在Objective-C中究竟是什么超级?

don*_*ile 48 objective-c super objective-c-runtime

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

任何人?

Ben*_*n S 46

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发送将数据结构作为返回值的方法.

所以是的,它是静态的,而不是在运行时确定的.


Chu*_*uck 29

它是一个等价的关键字self,但是使用超类的方法表开始其消息调度搜索.


NSR*_*der 19

super不是一个指向类.Super是self,但是当在消息表达式中使用时,它意味着"寻找以超类的方法表开头的实现".

  • 对于类方法,情况并非如此. (2认同)

Dav*_*har 5

这些关于什么是元类的博客帖子,获取子类类以及元类可能会让您对此内部有所了解.