我想在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的內存。 –