【发布时间】:2020-05-31 07:37:29
【问题描述】:
当我调试我的应用程序以查找 webview 没有收到我的消息的原因时,我发现另一个 WkWebview(我们称之为 B)是在我现有的 webview (A) 之上创建的。因为我只引用了 A,所以我试图使用它的内存地址直接在 B 上评估 js。 在 lldb 中这样做的正确方法是什么?
基于this answer,我尝试过:
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)```
【问题讨论】:
-
通过切换到lldb的objective-c模式可能更容易实现这一点:
e -l objc -- [0x13299e400 evaluateJavaScript:@"your javascript code" completionHandler:nil] -
@Kamil.S 我不得不进行一些调整,但它似乎确实有效。谢谢你的回答!
-
请发布您的最终解决方案,作为未来读者的答案。
标签: ios objective-c swift lldb