Как вам известно, блоки принимают -invoke
:
void(^foo)() = ^{
NSLog(@"Do stuff");
};
[foo invoke]; // Logs 'Do stuff'
Я хотел бы сделать следующее:
void(^bar)(int) = ^(int k) {
NSLog(@"%d", k);
};
[bar invokeWithParameters:7]; // Want it to log '7', but no such instance method
Обычный аргумент -invoke
работает <<24 > , но он печатает бессмысленное значение.
Я не могу найти такое прямое сообщение, которое могу отправить в блок, а также не могу найти исходную документацию, описывающую, как блоки принимают -invoke
.
Есть ли список сообщений, принятых блоками?
(Да, я попытался использовать class_copyMethodList
для извлечения списка методов из среды выполнения, там, как представляется, нет.)
Изменить: Да, я также знаю, что вы вызываете блок обычным способом (bar(7)
;). То, что мне действительно нужно, - это селектор для метода, который я могу подавать в библиотечный код, который не принимает блоки (per-se).