我有一个JSExport
协议,其名称为ChannelExport
,方法为- (void)sendRequest:(NSDictionary *)request withCallback:(JSValue *)callback;
。从JavaScript调用代码这种方法可行好吧,是这样的:如何将JS函数作为对象属性传递给iOS
channel.sendRequestWithCallback({'foo': 'bar'}, function(response) { ... });
在ObjC,我可以访问值在request
词典,又拨打了callback
功能。
现在我想的界面更改为- (void)sendRequest:(NSDictionary *)request
,传递JS函数作为request
字典的一部分,就像这样:
channel.sendRequestWithCallback({
'foo': 'bar'
'callback': function(response) { ... }
});
在这种情况下,当我尝试调用callback
功能ObjC,应用程序崩溃。显然callback
对象不是JSValue
,而是NSDictionary
(更准确地说,是__NSDictionaryM
)。我假设JS函数被正确包装为JSValue
,就像将它作为简单参数传递一样。
任何暗示为什么会发生这种情况,以及如何解决这个问题?