发送到 javascript 函数 objective-C 使用 JavascriptCore

标签: ios Objective-C
发布时间: 2016/10/4 2:23:15
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我正想发送一个 Javascript 函数对象到 Objective-C JavascriptCore,通过利用 JSExport Protocol。有一个在中声明的函数 Objective-C ,符合 JSExport,如下所示︰

(class View)
+ (void) newWithFunc:(id)func
{
    NSLog(@" %@ ", func);   
}

宣布此类之后, 我尝试调用以上具有一个 Javascript 函数对象作为参数的函数

JSValue *val;
val = [context evaluateScript:@"var mufunc = function() { self.value = 10; };"];
val = [context evaluateScript:@"mufunc;"];
NSLog(@" %@", val); //Prints as 'function() { self.value = 10; }', seems correct.
val = [context evaluateScript:@"var view = View.newWithFunc(mufunc);"];

当作出最后一次调用,参数发送到我 Objective-C 方法是 'NSDictionary',这似乎很有价值,如果我想要做是调用该函数从类型的 Objective-C 在稍后某个时间。这是可能与 JavascriptCore 吗?

解决方法 1:

请将Tayschrenn 的答复标记为正确。我不知道怎么他知道这还是在那里把它记录下来,但这是什么我想出的试验和错误︰

- (void)newWithFunc: (JSValue*)func
{
    [func callWithArguments:@[]]; // will invoke js func with no params
}

声明参数 (id)func 显然导致 javascript 可可桥上,将其转换为 NSDictionary (正如你注意到),使它无法作为可调用 JSValue。

官方微信
官方QQ群
31647020