super的本质
super调用,底层会转换为objc_msgSendSuper2函数的调用,接收2个参数
struct objc_super2
SEL
如上图
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
网友评论