Objective-C 是一门动态语言,方法的调用在编译期并不决定调用哪个函数,而是通过 Runtime(运行时) 将消息发送给对象()。 当向一个对象发送它无法响应的消息(即对象的方法列表中找不到对应的 Selector)时,程序并不会立即崩溃,而是会启动 消息转发(Message Forwarding) 机制。 这个机制给了开发者三次“自救”的机会。如果这三次机会都浪费了,程序才会抛出 异常并崩溃。 以下是消息转发的完整流程图解与详细步骤: --- 消息转发的三大阶段 1. 动态方法解析 (Dynamic Method Resolution) 这是第一道防线。Runtime 会通知类:“你没有这个方法,要不要现在动态添加一个?” 调用方法: 实例方法: 类方法: 如何处理: 在这个方法中,你可以利用 Runtime 的 函数动态地向类中添加一个方法实现(IMP)。如果添加成功并返回 ,Runtime 会重新尝试发送消息,流程结束。 典型应用场景: Core Data 的 属性(自动生成 getter/setter)。 2. 快速转发 (Fast Forwarding) 如果第...