美文网首页
self 与 super

self 与 super

作者: Hero_Guo | 来源:发表于2016-12-02 18:08 被阅读0次

    我们都知道:self 是类的隐藏参数,指向当前调用方法的这个类的实例。那 super 呢?

    很多人会想当然的认为“ super 和 self 类似,应该是指向父类的指针吧!这是很普遍的一个误区。其实 super 是一个 Magic Keyword, 它本质是一个编译器标示符,和 self 是指向的同一个消息接受者!他们两个的不同点在于:super 会告诉编译器,调用 class 这个方法时,要去父类的方法,而不是本类里的。

    举个栗子:
    下面的代码输出什么?

    @implementation Son : Father
    
     - (id)init {
        self = [super init]; 
        if (self) { 
          NSLog(@"%@", NSStringFromClass([self class]));       
          NSLog(@"%@", NSStringFromClass([super class])); 
        }
       return self;
    } 
    
    @end
    

    答案:
    都输出 Son

    NSStringFromClass([self class]) = Son
    NSStringFromClass([super class]) = Son
    

    参考链接:微博@Chun_iOS的博文刨根问底Objective-C Runtime(1)- Self & Super

    摘自这里,点击查看更多问题及答案

    相关文章

      网友评论

          本文标题:self 与 super

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