调试视图层级时控制台频繁出现Failed to get renderer info错误求助
解决Debug View Hierarchy时大量输出「Failed to get renderer info」错误的方案
问题场景
打开Debug View Hierarchy调试视图层级时,控制台持续输出大量重复错误日志,示例如下:
2023-06-14 15:47:07.356740+0300 BFB[19678:4582894] [API] Failed to get renderer info (client=0x42b6b2ed) [0x5 (os/kern) failure] 2023-06-14 15:47:07.356807+0300 BFB[19678:4582894] [API] Failed to get renderer info (client=0x42b6b2ed) [0x5 (os/kern) failure]
项目仅使用UIView、UITableView等标准UIKit组件,运行环境为M2 Max芯片Mac(32GB内存)、Ventura 13.4、Swift 5.8.1,空白测试项目无此问题,确认错误与当前项目相关。
可能成因
- 项目存在视图循环引用或未正确释放的视图资源:Debug View Hierarchy遍历视图树时,无法正常读取异常引用的视图渲染信息
- Build Settings中图形渲染相关配置被修改:与系统默认配置冲突,导致渲染器信息获取失败
- 自定义UI子类的生命周期方法实现异常:比如重写
layoutSubviews、draw(_:)时存在逻辑错误,干扰渲染信息采集 - Xcode或模拟器缓存文件损坏:Derived Data或模拟器缓存中的渲染相关文件失效
解决步骤
1. 清理缓存
- 关闭Xcode,删除Derived Data(路径可通过
Xcode > 设置 > 位置查看) - 打开模拟器,执行
设备 > 抹掉所有内容和设置清理缓存 - 重新打开项目,按
Cmd+Shift+K清理构建文件夹后重新编译
2. 检查视图层级与引用
- 排查循环引用:检查闭包、Delegate的引用方式,确保弱引用正确使用
- 检查UITableView/UICollectionView复用逻辑:避免在Cell复用时重复添加子视图
- 确认自定义视图在
deinit中正确移除监听、释放资源
3. 重置Build Settings
- 对比空白项目的Build Settings,重点检查
Core Animation、GPU Frame Capture相关选项,恢复为默认值 - 可导出项目配置与空白项目对比,定位并修正差异项
4. 排查自定义UI组件
- 临时替换所有自定义UI子类为原生组件,测试错误是否消失
- 逐步恢复自定义子类,定位到具体引发问题的类,检查生命周期方法实现
5. 更新开发环境
- 尝试更新到最新版本的Xcode,这类渲染相关的bug在新版本中常被修复
内容的提问来源于stack exchange,提问作者Alexey_BH
相关产品推荐
相关产品推荐

