【发布时间】:2016-02-24 15:51:18
【问题描述】:
我有一个名为ChannelExport 的JSExport 协议,其方法为- (void)sendRequest:(NSDictionary *)request withCallback:(JSValue *)callback;。从 Javascript 代码中调用此方法可以正常工作,如下所示:
channel.sendRequestWithCallback({'foo': 'bar'}, function(response) { ... });
在 ObjC 中,我可以访问 request 字典中的值,也可以调用 callback 函数。
现在我想将接口更改为- (void)sendRequest:(NSDictionary *)request,将JS函数作为request字典的一部分传递,如下所示:
channel.sendRequestWithCallback({
'foo': 'bar'
'callback': function(response) { ... }
});
在这种情况下,当我尝试在 ObjC 中调用 callback 函数时,应用程序崩溃了。显然callback 对象不是JSValue,而是NSDictionary(更准确地说是__NSDictionaryM)。我假设 JS 函数被正确地包装为 JSValue,就像将它作为简单参数传递时一样。
任何提示为什么会发生这种情况,以及如何解决这个问题?
【问题讨论】:
标签: ios javascriptcore jsvalue