3

我有一个类方法,它没有在 h 文件中声明,但在 m 文件中实现。现在我想在另一个类中调用它,由于返回值是一个int,我不能直接使用选择器,所以我使用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];

调用不成功,为什么?

4

1 回答 1

3

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

[invocation setArgument:&arg
                atIndex:2];

参见[NSInvocation setArgument:atIndex:]类参考。

于 2013-05-14T12:13:39.113 回答