我有一个类方法,它没有在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];
调用不成功,为什么?
答案 0 :(得分:3)
传递参数时,您传递的是地址,而不是它们的值。请尝试以下方法:
[invocation setArgument:&arg
atIndex:2];
请参阅班级参考中的[NSInvocation setArgument:atIndex:]
。