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
相关产品推荐
相关产品推荐

