据我所知,它是一个指向超类的指针。它与超类硬连线,而不是在运行时动态计算出来。想详细了解一下...
任何人?
本质上,它允许您使用当前类的超类的实现。
[super message]
具有以下含义:
当遇到方法调用时,编译器生成对函数 objc_msgSend、objc_msgSend_stret、objc_msgSendSuper 或 objc_msgSendSuper_stret 之一的调用。发送到对象超类的消息(使用 super 关键字)使用 objc_msgSendSuper 发送;其他消息使用 objc_msgSend 发送。使用 objc_msgSendSuper_stret 和 objc_msgSend_stret 发送具有数据结构作为返回值的方法。
所以是的,它是静态的,而不是在运行时确定的。
它是一个等效于 的关键字self
,但它从超类的方法表开始其消息调度搜索。
super
不是指向类的指针。Super 是self
,但在消息表达式中使用时,它的意思是“从超类的方法表开始查找实现”。
这些关于什么是元类的博客文章?,获取子类和类以及元类可能会让您对它的内部有所了解。