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

时间:2010-06-22 17:02:42

标签: objective-c super objective-c-runtime

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

任何?

4 个答案:

答案 0 :(得分:46)

super

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

对于Objective-C运行时的gritty details

[super message]具有以下含义:

  

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

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

答案 1 :(得分:29)

这是一个等同于self的关键字,但是使用超类的方法表开始其消息调度搜索。

答案 2 :(得分:19)

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

答案 3 :(得分:5)

what is a meta class?getting subclassesclasses and metaclasses上的这些博客帖子可能会让您对此内容有所了解。