ldi*_*ual 5 iphone objective-c-blocks javascriptcore ios7
我想在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');"];
Run Code Online (Sandbox Code Playgroud)
我相信JSC包装器不会将第二个参数传递给块,因为va_list在记录第一个参数后迭代崩溃.
我也尝试过这个NSArray*惯例,它不起作用.
这有可能吗?
来自JSContext.h:
// This method may be called from within an Objective-C block or method invoked
// as a callback from JavaScript to retrieve the callback's arguments, objects
// in the returned array are instances of JSValue. Outside of a callback from
// JavaScript this method will return nil.
+ (NSArray *)currentArguments;
Run Code Online (Sandbox Code Playgroud)
通向以下内容:
ctx[@"func"] = ^{
NSArray *args = [JSContext currentArguments];
for (JSValue *arg in args) {
NSLog( @"%@", arg);
}
};
[ctx evaluateScript:@"func('arg1', 'arg2');"];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1067 次 |
| 最近记录: |