Runtime:super的本质

2022-03-29  本文已影响0人  东方诗空

super的本质

super调用,底层会转换为objc_msgSendSuper2函数的调用,接收2个参数
struct objc_super2
SEL

image.png

如上图
receiver是消息接收者
current_class是receiver的Class对象

[super message]的底层实现
1.消息接收者仍然是子类对象
2.从父类开始查找方法的实现

[super run];
super调用的receiver仍然是该调用的对象

@implementation NSObject

- (Class)class
{
    return object_getClass(self);
}

- (Class)superclass
{
    return class_getSuperclass(object_getClass(self));
}

@end
上一篇下一篇

猜你喜欢

热点阅读