Я хотел бы определить функцию в контексте JavascriptCore, которая принимает переменное количество аргументов.
Что-то вроде этого:
JSVirtualMachine* virtualMachine = [[JSVirtualMachine alloc] init];
JSContext* ctx = [[JSContext alloc] initWithVirtualMachine:virtualMachine];
ctx[@"func"] = ^(JSValue* value, ...){
va_list args;
va_start(args, value);
for (JSValue *arg = value; arg != nil; arg = va_arg(args, JSValue*)) {
NSLog( @"%@", arg);
}
va_end(args);
};
[ctx evaluateScript:@"func('arg1', 'arg2');"];
Я считаю, что оболочка JSC не передает второй аргумент в блок, потому что итерация по va_list
завершается сбоем после регистрации первого аргумента.
Я также пробовал с соглашением NSArray*
, оно не работает.
Возможно ли это каким-либо образом?
JSObjectMakeFunctionWithCallback
, но я хотел бы отказаться от этого интерфейса C, чтобы ARC мог обрабатывать память JS Value. - person ldiqual   schedule 11.02.2014