美文网首页
底层13:Runtime-Super

底层13:Runtime-Super

作者: 张无奈 | 来源:发表于2020-09-02 00:04 被阅读0次

    super:

    很好解释第三行打印

    NSObject中class方法伪代码实现如下:

    实例对象调用:

    isKindOfClass: 前面的对象的类对象是否是后面的类型或者后面类型的父类

    isMemberOfClass: 判断当前对象的类对象是不是就是后面的对象

    通过OC源代码更清楚了解,如下就是拷贝过来的源代码:

    如果是类对象调用,右边要传入元类对象

    下面一个特别的例子:

    在一个类中有以下一个实例方法

    控制器中如下调用,打印却是当前控制器:

     1.print为什么能够调用成功?

    是因为obj指向cls地址,调用print方法的时候,刚好是取用第一个元素,类似isa指针,所以他的调用方法等价 NSObject *obj2 = [[NSObject alloc] init]; [obj2 print];

     2.为什么self.name变成了ViewController等其他内容

    相关文章

      网友评论

          本文标题:底层13:Runtime-Super

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