Я пытаюсь получить подпись блока в методе протокола.
Вот пример протокола:
@protocol ProtocolSample <NSObject>
- (void) doSomething: (void (^) (NSString *))a_block;
@end
Я могу получить подпись doSomething
используя следующее:
Protocol *protocol_sample = @protocol(ProtocolSample);
unsigned int outCount;
struct objc_method_description *method_description_list = protocol_copyMethodDescriptionList(protocol_sample, YES, YES, &outCount);
struct objc_method_description method_description = method_description_list[0];
NSMethodSignature *signature = [NSMethodSignature signatureWithObjCTypes:method_description.types];
Я получаю подпись: v@:@?
Моя цель - получить подпись a_block
.Я перепробовал много методов, включая следующие:
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature];
void *block;
[invocation getArgument:&block atIndex:2];
Но block
всегда NULL
.
Как можно получить подпись a_block
?