首页 > 解决方案 > 从 lldb 调用 WKWebView 上的方法

问题描述

当我调试我的应用程序以查找为什么 webview 没有收到我的消息时,我发现另一个 WkWebview(我们称之为 B)是在我现有的 webview (A) 之上创建的。因为我只引用了 A,所以我试图使用它的内存地址直接在 B 上评估 js。在 lldb 中这样做的正确方法是什么?

基于这个答案,我试过: settings set target.language swift e -- import WKWebview e -- let $webView = unsafeBitCast(0x13299e400, to:WKWebview.self)

为了调用 webView.evaluateJavaScript,但 lldb 说:

let $webView = unsafeBitCast(0x13299e400, to:WKWebview.self)
               ^

error: <EXPR>:3:46: error: cannot convert value of type 'module<WKWebview>' to expected argument type 'U.Type'
let $webView = unsafeBitCast(0x13299e400, to:WKWebview.self)```

标签: iosobjective-cswiftlldb

解决方案


感谢@Kamil.SI 设法做到了。完整的步骤是:

(lldb) e @import <WKWebview.h>
(lldb) e NSString *$js = <my javascript to evaluate>
(lldb) e (void)[(id)0x10504ea00 evaluateJavaScript:$js completionHandler:nil]

推荐阅读