iOS  self  super

2019-03-06  本文已影响0人  有缘人2830

@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

上一篇下一篇

猜你喜欢

热点阅读