据我所知,它是指向超类的指针。它与超类硬连接,而不是在运行时动态计算出来的。想更详细地了解它......
任何?
答案 0 :(得分:46)
基本上,它允许您使用当前类'超类的实现。
对于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 subclasses和classes and metaclasses上的这些博客帖子可能会让您对此内容有所了解。