Как использовать NSInvocation для вызова метода класса?
У меня есть метод класса, который не объявлен в файле 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];
вызов не удается, почему?
1 ответ
Решение
При передаче аргументов вы передаете их адрес, а не их значение. Попробуйте следующее:
[invocation setArgument:&arg
atIndex:2];
Увидеть [NSInvocation setArgument:atIndex:]
в классе ссылки.