[super message]底层实现

疑问:为什么有时调用[super class]会打印子类的类?
此方法调用:

  • objc_msgSendSuper(arg,@selector(class));
  • struct objc_super arg = {self,[父类 class]}
  • struct objc_super {receiver消息接收者,super_class消息接受者的父类}
  • class 方法底层实现是:object_getClass(self)
    所以返回的还是子类的类(self)

所以[super message]底层实现:

1.消息接收者仍然是子类对象
2.从父类开始查找方法的实现

你可能感兴趣的:([super message]底层实现)