You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

二次访问WKWebView的backForwardList相关列表触发EXC_I386_GPFLT崩溃

WKWebView访问backList崩溃原因

核心崩溃原因

  • 非主线程访问WKWebView属性:苹果官方明确要求WKWebView的所有属性访问、API调用都必须在主线程执行,子线程访问会触发偶现的野指针崩溃。首次调用时底层相关资源刚好处于就绪状态不会触发异常,第二次调用时临时资源已经被释放,就会抛出EXC_I386_GPFLT坏地址访问错误。
  • WKWebView实例已释放:调用代码时如果WKWebView实例已经被ARC回收,访问野指针的属性就会触发崩溃。
  • 系统版本底层Bug:部分iOS 13~14版本存在底层缺陷,在WKWebView执行页面跳转、goBack/goForward操作后立刻访问backList,会出现底层WKBackForwardList实例提前释放的问题,导致访问崩溃。

修复方案

强制在主线程访问,同时添加弱引用判断避免野指针:

DispatchQueue.main.async { [weak webView] in
    guard let webView = webView else { return }
    let backList = webView.backForwardList.backList
    // 直接遍历数组即可,无需手动截取区间避免越界
    for item in backList {
        print(item.title ?? "")
    }
}

内容的提问来源于stack exchange,提问作者Sajjad Ali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 00:06:03