第一级转发:主体不变,动态添加对应函数;
第二级转发:函数不变,切换接收主体;
第三极转发:函数签名不变,主体和函数都有可能变化;
1、使用函数的动态添加技术;
2、使用的类似is-a swzzing技术;
3、使用到了函数签名的机制,保证函数的输入输出参量个数一致。
https://www.cnblogs.com/biosli/p/NSObject_inherit_2.html
- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector
{
return [stream methodSignatureForSelector:aSelector];
}
- (void)forwardInvocation:(NSInvocation *)anInvocation
{
[anInvocation invokeWithTarget:stream];
}