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

iOS 17.5.1设备连接Xcode运行时WK相关代码崩溃求助

iOS 17.5.1 下 WK 相关代码调试崩溃问题排查与解决

问题概况

  • 两台搭载iOS 17.5.1的iPhone设备,所有WK相关代码在Xcode构建并运行时触发崩溃,直接启动应用则无异常
  • 崩溃错误:Thread 1: EXC_BREAKPOINT (code=1, subcode=0x19e88fa18)
  • 开发环境:Xcode 15.4、MacBook Pro 14(Sonoma 14.5),iOS 16.5系统未出现该问题

涉及代码示例

WK网站数据清理逻辑

WKWebsiteDataStore.default()
            .fetchDataRecords(ofTypes: WKWebsiteDataStore.allWebsiteDataTypes()) { records in
                records
                    .forEach {
                        WKWebsiteDataStore.default()
                            .removeData(ofTypes: $0.dataTypes,
                                        for: [$0],
                                        completionHandler: {})
                    }
            }

WKWebView配置代码

let webConfiguration = WKWebViewConfiguration()
webConfiguration.preferences.javaScriptCanOpenWindowsAutomatically = true

可行解决方向

  • 复用WKWebsiteDataStore实例:避免在闭包内重复调用WKWebsiteDataStore.default(),提前获取实例并复用,减少调试环境下的实例创建冲突。修改后代码:
    let dataStore = WKWebsiteDataStore.default()
    dataStore.fetchDataRecords(ofTypes: WKWebsiteDataStore.allWebsiteDataTypes()) { records in
        records.forEach { record in
            dataStore.removeData(ofTypes: record.dataTypes, for: [record], completionHandler: {})
        }
    }
    
  • 调整Xcode断点配置:关闭Xcode的「All Exceptions」全局断点,仅保留业务自定义断点,规避调试器与WK框架的兼容性触发的中断
  • 延迟WK操作时机:将WK相关初始化、数据操作放在viewDidAppear或异步队列中执行,避免应用启动初期主线程负载过高触发调试崩溃
  • 临时关闭调试执行:在Xcode scheme配置中关闭「Debug executable」选项,若崩溃消失则确认是调试器与iOS 17.5.1的兼容性问题,可等待Xcode官方更新修复

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 08:24:57