6.0.发送消息
- 方法调用的本质,就是让对象发送消息。
- objc_msgSend,只有对象才能发送消息,因此以objc开头.
使用步骤:
- 导入:
<objc/message.h>。 - Xcode5之后的版本需要在
Build Settings里搜索msg,将Enable Strict Checking of objc_msgSend Calls改为NO
// 创建Person对象
Person *person = [[Person alloc] init];
// 用RunTime的方式给person对象发送消息
objc_msgSend(person, @selector(eat));
objc_msgSend(person, @selector(run:), 20);
// 获取类对象
Class personClass = [Person class];
// 用RunTime的方式给Person类对象发送消息
objc_msgSend(personClass, @selector(eat));
- 消息机制原理:对象根据方法编号SEL去映射表查找对应的方法实现