如何使用super我们都知道。现在的问题是,它是如何工作的呢?
首先我们需要知道的是super与self不同。self是类的一个隐藏参数,每个方法的实现的第一个参数即为self。而super并不是隐藏参数,它实际上只是一个”编译器标示符”,它负责告诉编译器,当调用viewDidLoad方法时,去调用父类的方法,而不是本类中的方法。而它实际上与self指向的是相同的消息接收者。为了理解这一点,我们先来看看super的定义:
struct objc_super {
id receiver; Class superClass;
};
这个结构体有两个成员:
1.receiver:即消息的实际接收者。
2.superClass:指针当前类的父类。