当对象调用方法时,其实是向这个对象发送了一条消息(objc_msgSend)
然后会在对象的方法列表里面找这个method的实现
如果没找到,在崩溃之前,runtime会给这个对象三次补救的机会。
1.resolveInstanceMethod。方法交换
2. forwardingTargetForSelector。使用备援接收者处理这个消息
3. 使用methodSignatureForSelector 生成方法签名 给 forwardInvocation调用。(自己新建方法签名,再在**forwardInvocation**中用你要转发的那个对象调用这个对应的签名,这样也实现了消息转发。)
如果在以上三个流程中处理了这条消息,程序正常运行,否者程序抛出错误 unrecognized selector sent to instance
以上仅用来快捷记忆。