
向对象发送消息,核心就是找到对应的方法,然后传入参数执行。
其具体过程是:
需要注意的是, 向super对象发送消息,调用的不是objc_msgSend方法。
- NSLog(@"NSStringFromClass([self class])=%@",NSStringFromClass([self class]));
- NSLog(@"NSStringFromClass([super class])=%@",NSStringFromClass([super class]));
-
- 打印结果:
- NSStringFromClass([self class])=BankViewController
- NSStringFromClass([super class])=BankViewController
为什么 [super class]返回的也是BankViewController呢? 这是因为, super结构体中的receiver指针其实指向的也是self,只是向super发送消息调用的是objc_msgSendSuper方法,该方法在执行消息传递时,会调用查找自己类中的方法,直接从父类开始查找。