我想从NSInvocation派生一个MyInvocation,这个MyInvocation带有成员变量的。
但NSInvocation的实例只能通过 + (NSInvocation *)invocationWithMethodSignature:(NSMethodSignature *)signature获得。
也就是说,NSInvocation的init是无效的。所以无法通过重写init函数来实例化MyInvocation。
那么我该如何实例化MyInvocation呢?
但NSInvocation的实例只能通过 + (NSInvocation *)invocationWithMethodSignature:(NSMethodSignature *)signature获得。
也就是说,NSInvocation的init是无效的。所以无法通过重写init函数来实例化MyInvocation。
那么我该如何实例化MyInvocation呢?
另外这个类似乎没有派生的必要吧?
我用派生类实现类似function adepter的模式。
+ (NSInvocation *)invocationWithMethodSignature:(NSMethodSignature *)signature
{
......
return [super invocationWithMethodSignature:signature];
}
int paramIndex;
}
@end+ (Adepter *)invocationWithMethodSignature:(NSMethodSignature *)signature
{
......
return [super invocationWithMethodSignature:signature];
}
这样?另外我需要在return前设置实例的paramIndex的值,该怎么做呢?
比如:
+ (Adepter *)invocationWithMethodSignature:(NSMethodSignature *)signature index:(int)index
{
paramIndex = index;
return [super invocationWithMethodSignature:signature];
}
所以还是回到原来的问题,这个类没有派生的必要
你想要通过index找到对应方法完全可以通过NSInvocation的setTarget, setSelector来完成
NSInvocation本身已经是一个adapter了
NSInvocation很原始,只有setArgument:atIndex:,可是我要的是一个能不断追加参数而不去关心index的adpter,这点NSinvocation做不到。
用一个类包含两个实例变量NSInvocation,int不行么?