如何使用NSInvocation来调用类方法?

时间:2013-05-14 11:56:37

标签: iphone nsinvocation

我有一个类方法,它没有在h文件中声明,而是在m文件中实现。 现在我想在另一个类中调用它,因为返回值是一个int,我不能直接使用selector,所以我使用NSInvocation。

以下是我正在做的事情:

SEL selector = ***;
NSMethodSignature *signature = [classA methodSignatureForSelector:selector];
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature];
invocation.selector = selector;
invocation.target = [classA class];
[invocation setArgument:(void *)arg atIndex:2];
[invocation invoke];

调用不成功,为什么?

1 个答案:

答案 0 :(得分:3)

传递参数时,您传递的是地址,而不是它们的值。请尝试以下方法:

[invocation setArgument:&arg
                atIndex:2];

请参阅班级参考中的[NSInvocation setArgument:atIndex:]