gpt4 book ai didi

javascript - WKScriptMessage.body 导致 EXC_BAD_ACCESS

转载 作者:行者123 更新时间:2023-11-30 13:29:22 25 4
gpt4 key购买 nike

我正在使用 WKWebView 我的 Mac 应用程序中用于显示网页的组件。此网页使用 JavaScript 调用 webkit.messageHandlers["callbackHandlerName"].postMessage(dataObject); 将数据发送到 native 应用程序

我可以在我的 native 应用程序中毫无问题地接收大部分消息(然后将其正文转换为 NSDictionary ),但某些类型的消息会导致 EXC_BAD_ACCESS当我尝试访问属性 message.body 时。我不明白为什么有些数据无法发送到 native 应用程序而其他数据可以(在这两种情况下数据都是嵌套的 JavaScript 对象)

internal func userContentController(userContentController: WKUserContentController, didReceiveScriptMessage message: WKScriptMessage)
{
switch (message.name)
{
case "nativeCallbackA":
onNativeCallbackA(message.body)
case "nativeCallbackB":
onNativeCallbackB(message.body) //throws EXC_BAD_ACCESS
default:
print("Unsupported message " + message.name);
}
}

使用 JS 传递到 native 应用程序的消息是否有任何限制 postMessage打电话?

最佳答案

哦哦!我解决了我的问题:

我的处理程序nativeCallbackB声明为:

func nativeCallbackB(data: Any) {//... }

但是WKScriptMessage.body的类型是AnyObject

因此,我将处理程序的声明更改为:

func nativeCallbackB(data: AnyObject) {//... }

现在它可以工作了(但我仍然不知道为什么某些消息也可以在处理程序声明不正确的情况下工作,以及为什么 Xcode 在编译之前不检查这些问题)

关于javascript - WKScriptMessage.body 导致 EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36745261/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com