美文网首页
super 详解

super 详解

作者: 张_何 | 来源:发表于2021-05-09 01:06 被阅读0次
  • super调用,底层会转换为objc_msgSendSuper2函数的调用,接收2个参数,struct objc_super2 和 SEL
struct objc_super2{
  id receiver; // 消息接收者
  Class current_class; // receiver 的 Class 对象
}
  • super 调用其本质还是 self,只不过用它调用方法时是从父类的方法列表中开始找
@interface Person : NSObject
@end
@implementation Person
@end

@interface Student : Person
@end
@implementation Student
- (instancetype)init{
    if (self = [super init]) {
        NSLog(@"[self class] = %@", [self class]); // Student
        NSLog(@"[self superclass] = %@", [self superclass]); // Person
        NSLog(@"[super class] = %@", [super class]); // Student
        NSLog(@"[super superclass] = %@", [super superclass]);// Person
    }
    return self;
}
@end

对于上面[super superclass]显示的是 Person,是这样的 superclass方法的调用者是 super,本质还是 Student 对象,不过要从Student 的父类 Person 中去找superclass方法,但调用者还是 Student 对象,Student 对象调用 superClass 方法返回的自然是 Person.

相关文章

  • super详解

    说到 super, 大家可能觉得很简单呀,不就是用来调用父类方法的嘛。如果真的这么简单的话也就不会有这篇文章了,且...

  • super 详解

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

  • super()方法详解

    基本概念: constructor(构造方法) constructor 是对es6类的默认方法,通过 new 命令...

  • POM标签解释(转)

    一、父(Super) POM 二、POM标签大全详解 三、maven项目pom.xml中parent标签的使用  ...

  • 通配符详解 extends super

    在java泛型中,? 表示通配符,代表未知类型,< ? extends Object>表示上边界限定通配符,< ?...

  • Python super函数详解

    Python中对象方法的定义很怪异,第一个参数一般都命名为self(相当于其它语言的this),用于传递对象本身,...

  • POM标签大全详解(2020-08-25)

    POM标签大全详解 父(Super) POM maven会自动获得需要的本地仓库 jar包,如果没有就会去网上的中...

  • python super方法,MRO详解

    python2和python3中super的使用: python2中的super只适用与新式类,在早期的pytho...

  • Objective-C 中Self 和 Super 详解

    Objective-C中Self和Super详解本文要介绍的内容,在Objective-C中的类实现中经常看到这两...

  • 【Java】this、super关键字详解

    一、this 首先,我刚学到面向对象的时候,对于这个"this"还是一脸蒙逼的。就感觉是穿了一件外套,本来自己觉得...

网友评论

      本文标题:super 详解

      本文链接:https://www.haomeiwen.com/subject/ljsqdltx.html