DGCharts替换Charts后APP崩溃:EXC_BAD_ACCESS错误求助
解决DGCharts替换Charts后出现EXC_BAD_ACCESS崩溃问题
问题场景
此前使用的Charts库(原仓库已更名为DGCharts),仅修改Podfile将pod 'Charts'替换为pod 'DGCharts'后,pod安装成功,但访问图表时APP崩溃,报错DGCharts EXC_BAD_ACCESS (code=2, address=0x12a113e30)。使用M1 MacBook,直接引入pod 'DGCharts'问题依旧。
可行解决方案
彻底清理缓存并重构建
- 终端执行
pod deintegrate移除所有pod依赖 - 删除项目目录下的
Pods文件夹、Podfile.lock文件 - Xcode中执行
Cmd+Shift+K清理构建文件夹 - 重新执行
pod install,重启Xcode后重新编译项目
- 终端执行
统一命名空间与类引用
- 全局替换所有
import Charts为import DGCharts - 检查代码中所有Charts相关类的引用,确认DGCharts中类名无变更(多数类名保持一致,但需排查遗漏的硬编码引用)
- 全局替换所有
适配M1架构编译设置
- 打开项目
Build Settings,将Architectures设为Standard Architectures (arm64, x86_64) Build Active Architecture Only在Debug模式下设为Yes- 检查
Excluded Architectures,确保Debug/Release模式下无冲突架构配置
- 打开项目
锁定兼容版本
如果原Charts使用的是旧版本,直接升级到最新DGCharts可能存在兼容性问题:
在Podfile中指定与原Charts版本相近的DGCharts版本,例如:pod 'DGCharts', '~> 4.0.0'具体版本可参考DGCharts的Release日志确认兼容性
定位内存访问问题
EXC_BAD_ACCESS多与内存错误相关,可通过Xcode调试工具定位:- 打开
Edit Scheme->Run->Diagnostics,勾选Zombie Objects - 重新运行项目,触发崩溃时Xcode会提示具体的内存访问对象,针对性修复代码中的野指针或已释放对象引用
- 打开
内容的提问来源于stack exchange,提问作者Dinuka Shehan
相关产品推荐
相关产品推荐

