oc 基础 -runtime -super

80 阅读1分钟

nslog(self class]); lldb sutdent nslog(self superClass); lldb person nslog(super class); lldb sutdent nalog(super superClass) lldb person

[super run] 会调用 父类的run 方法 ; 通过superClass 类中直接查找

[super Class] 方法 会从nsobject 类中查找, 因为其他子类没有实现过 class 方法

[super Class] == [super Class:(id)self cmd(Sel)cmd]; recever -> self

  • (Class)class { // self 是谁就返回谁 return objc_getClass(self); }

总结 super 消息接受者 仍然是子类对象 方法查找从 父类开始查找方法

  • (Class)superClass { return objc_getsuoerClass(objc_getClass(self)); }