我有一個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
,就像將它作爲簡單參數傳遞一樣。
任何暗示爲什麼會發生這種情況,以及如何解決這個問題?