iOS  self  super

@implementation Son : Father

- (id)init

{

    self = [super init];

    if (self)

    {

        NSLog(@"%@", NSStringFromClass([self class]));

        NSLog(@"%@", NSStringFromClass([super class]));

    }

    return self;

}

@end

打印结果:

Son

Son

当 发送 class 消息 时不管是 self  还是 super 其消息主体依然是  self ,也就是说 self 和 super 指向的 是同一个对象。只是 查找方法的位置 区别,一个从本类,一个从本类的超类。

一般情况下  class 方法 只有在 根类 NSObject 中定义,极少情况有子类重写 class 方法,

所以  [slef  class] 和 [super class] 都是在 根类中 找方法实现, 消息接收主体 又都是 a

如果重写可能会不一样。

自然都打印出  Son

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容