iOS 之self和super区别

2016-09-06  本文已影响673人  践行者

要点:

self和super底层实现原理:

<code>
struct objc_super {
id receiver;
Class superClass;
};
</code>
当编译器遇到 [super setName:] 时,开始做这几个事:

1)构 建 objc_super 的结构体,此时这个结构体的第一个成员变量 receiver 就是 子类,和 self 相同。而第二个成员变量 superClass 就是指父类
调用 objc_msgSendSuper 的方法,将这个结构体和 setName 的 sel 传递过去。

2)函数里面在做的事情类似这样:从 objc_super 结构体指向的 superClass 的方法列表开始找 setName 的 selector,找到后再以 objc_super->receiver 去调用这个 selector

上一篇 下一篇

猜你喜欢

热点阅读