[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.从父类开始查找方法的实现

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

推荐阅读更多精彩内容