如何使用NSInvocation调用类方法?
问题描述:
我有一个类方法,它没有在h文件中声明,但在m文件中实现。 现在我想调用它在另一个类,因为返回值是一个int,我不能直接使用选择器,所以我使用NSInvocation。如何使用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];
的调用将不会成功,为什么呢?
答
传递参数时,你传递它们的地址,而不是它们的值。请尝试以下操作:
[invocation setArgument:&arg
atIndex:2];
请参阅[NSInvocation setArgument:atIndex:]
中的类引用。
如果你想调用它在另一个比它不应该在.h以及.. ..? – 2013-05-14 11:58:54
“调用不能成功”什么“不成功”呢? – newacct 2013-05-14 19:44:54
@newacct谢谢 – Jerrylk 2013-05-15 02:06:57