6.0.发送消息

  • 方法调用的本质,就是让对象发送消息。
  • objc_msgSend,只有对象才能发送消息,因此以objc开头.

使用步骤:

  1. 导入: <objc/message.h>
  2. 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去映射表查找对应的方法实现