小编DrJ*_*000的帖子

Objective-C:在带有参数的块上是否有-invoke?

您可能知道,块采取-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);).我真正追求的是一个方法的选择器,我可以提供给不带块的库代码(本身).

objective-c objective-c-blocks

11
推荐指数
2
解决办法
4645
查看次数

标签 统计

objective-c ×1

objective-c-blocks ×1