Как вы, наверное, знаете, блоки принимают -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
работает на -баре
, но он печатает нелепое значение.
-invoke я не могу найти ни прямого сообщения такого рода, которое я мог бы послать блоку, ни оригинальной документации, которая бы описывала, как блоки берут -invoke
.
Есть ли список сообщений, принимаемых блоками?
(Да, я пытался использовать class_copyMethodList
для извлечения списка методов из среды исполнения; похоже, что их нет)
Edit: Да, я также знаю, что вызываю блок обычным способом (bar(7)
;). На самом деле мне нужен селектор для метода, который я могу подать в библиотечный код, который не принимает блоки (per-se).