您可能知道,块采取-invoke:
void(^foo)() = ^{
NSLog(@"Do stuff");
};
[foo invoke]; // Logs 'Do stuff'
Run Code Online (Sandbox Code Playgroud)
我想做以下事情:
void(^bar)(int) = ^(int k) {
NSLog(@"%d", k);
};
[bar invokeWithParameters:7]; // Want it to log '7', but no such instance method
Run Code Online (Sandbox Code Playgroud)
普通的自由论点-invoke可以使用bar,但它打印出一个无意义的值.
我找不到这种可以发送到块的直接消息,也无法找到描述块如何采用的原始文档-invoke.是否有块接受的消息列表?
(是的,我尝试使用class_copyMethodList从运行时提取方法列表;似乎没有.)
编辑:是的,我也知道以通常的方式调用块(bar(7);).我真正追求的是一个方法的选择器,我可以提供给不带块的库代码(本身).