iOS消息转发机制分为三步骤:动态分析、备用接受者、完整转发。
动态分析涉及的方法:
+ (BOOL)resolveClassMethod:(SEL)sel{} //类方法 + (BOOL)resolveInstanceMethod:(SEL)sel()//实例方法
//重写这俩个方法,当向对象发送一个未知方法的时候,会调用以上方法。我们有机会在该方法中为未知消息增加一个处理方法。
如果以上俩个方法无法处理消息,继续调用备用接受者。
- (id)forwardingTargetForSelector:(SEL)aSelector{} //备用接受者,只能是新对象不能是self本身。
如果以上方法都不能处理消息,调用完整转发
- (void)forwardInvocation:(NSInvocation *)anInvocation{} //在此方法中如果未对消息进行处理,系统会抛出未找到该方法的异常