Цель-C: Есть ли -invoke на блоках, которые принимают параметры?

Как вы, наверное, знаете, блоки принимают -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).

11
задан DrJosh9000 20 September 2011 в 01:03
поделиться