我想在JavascriptCore上下文中定义一个函数,该函数接受可变数量的参数。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*
惯例,它不起作用。
这有可能以任何方式吗?
我也试着界定了多个ARGS一个Objective-C的控制台日志处理程序时,要做到这一点,但使用NSLogv无法得到它,甚至去。一个混乱的方法 - 您可以尝试通过JSON将参数序列化为单个参数,然后在您的Objective-C处理程序中将其解压缩。 – Mike
是的,这将是最后的手段。实际上有一种方法可以使用常规的C API,使用'JSObjectMakeFunctionWithCallback',但是我想离开那个C接口,以便ARC可以处理JS Value的内存。 –