第二次访问wkwebview的backForwardList.backList或backForwardList.forwardList导致崩溃

问题描述 投票:0回答:2

我正在尝试访问 wkWebview 的 backList,我编写了下面的代码来查找它。 每当我第一次尝试访问它时,下面的代码都可以正常工作,但是当我再次尝试第二次访问 wkwebview 的后备列表时,我会遇到代码访问错误的崩溃:EXC_I386_GPFLT

下面是我写的代码:

let backList = webView.backForwardList.backList
let count = backList.count
for item in backList[0..<count] {
    print(item.title)
}

我在第一行就崩溃了。 谁能指导我崩溃的原因是什么?

ios swift webview wkwebview
2个回答
1
投票

你尝试过这样的事情吗

for page in webView.backForwardList.backList {
    print("User visited \(page.title) \(page.url.absoluteString)")
}

0
投票

这样做:

let backList = webView.backForwardList.backList

您正在

backList
内部创建一个对
backForwardList
的更强引用,这意味着您要冒险寻址未分配的内存单元,因为在执行此操作时
backList
可能会发生更改:

backList[0..<count]

因为

WKBackForwardList
是一个引用类型对象,可能会同时在任何其他地方被修改。如何处理是你自己的事,但解决问题的最标准方法是使用 copy 方法进行复制,以避免像你这样的错误。

© www.soinside.com 2019 - 2024. All rights reserved.