Objective-C 是一门动态语言,其核心机制就是消息发送 (Messaging)。在 C 语言中,函数调用在编译期就决定了跳转地址;而在 Objective-C 中, 并不会立即执行 方法的代码,而是向 发送了一条名为 的消息。 这个过程的核心函数就是 。整个流程大致可以分为三大阶段: 1. 消息发送阶段 (Messaging / Lookup):查找方法的实现 (IMP)。 2. 动态方法决议阶段 (Dynamic Method Resolution):如果找不到,给个机会动态添加方法。 3. 消息转发阶段 (Message Forwarding):如果还没添加,将消息转发给其他对象处理。 --- 0. 编译阶段 编译器会将你的代码转换成 C 语言函数调用: 的原型为: --- 1. 消息发送阶段 (Messaging) 这是最频繁发生的阶段,为了性能,苹果在 Runtime 中使用了大量的汇编代码来优化这一步。 1.1 判断 receiver 是否为 nil 如果 是 , 会直接返回(根据返回值类型返回 0、nil 或 void),不会进行后续查找。这就是为什么给 ni...