在JSConext的方法中传递块

时间:2016-12-15 16:10:33

标签: javascript ios objective-c

我正在使用JSContext并创建一个如下所示的函数

context[@"callOriginalMethod"] = ^(NSArray* arr, closureBlock block)
{
    block(arr);
};

和closureBlock定义为

typedef void (^closureBlock)(NSArray*);

然而,当我从JS调用callOriginalMethod时,我收到此错误: TypeError: callOriginalMethod is not a function. (In 'callOriginalMethod(a, globalCl)', 'callOriginalMethod' is an instance of NSBlock)

当我从closureBlock block移除callOriginalMethod时,一切都按预期工作。问题是什么?我们如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

这是你可以做到的:

context[@"callBlock"] = ^(JSValue *block)
{
    [closure callWithArguments:nil];
};

和JS

callBlock(a, function(a){closure(a);})