Как использовать 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:] в классе ссылки.

Другие вопросы по тегам