我正在使用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时,一切正常。问题出在哪里,我们该如何解决?

最佳答案

这是您可以执行的操作:

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

和在JS中
callBlock(a, function(a){closure(a);})

关于javascript - 在JSConext方法中传递块,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41168577/

10-12 05:42