更新iPhone与Xcode后iOS应用真机崩溃、模拟器正常问题求助
刚更完iPhone系统和Xcode就遇上这种真机崩溃的情况确实闹心,结合你给出的崩溃信息和Firebase日志,我整理了几个针对性的解决步骤,按顺序试试应该能搞定:
排查Firebase初始化的空指针问题
Thread 1: EXC_BAD_ACCESS (code=1, address=0x0)本质是访问了空内存地址,再加上日志里的Firebase/Analytics线索,大概率是初始化环节出了问题。先检查GoogleService-Info.plist的Target关联:右键这个文件,看右侧面板的「Target Membership」,确保你的主应用Target是勾选状态——更新Xcode后经常会出现文件关联丢失的情况。另外,确认代码里有没有在FirebaseApp.configure()之前就调用Firebase相关的API(比如Analytics的事件上报),这种提前访问在模拟器里可能侥幸运行,但真机上直接触发空指针崩溃。校验真机的权限配置
模拟器对权限的校验比较宽松,但真机上如果Info.plist里的权限描述缺失或格式错误,很可能导致启动崩溃。尤其是Firebase相关功能需要的权限,比如启用了广告追踪的话要添加NSAppTrackingUsageDescription,就算没开追踪,也得确保Info.plist里没有语法错误(比如标签拼写错、引号不闭合)。打开Info.plist看看有没有红色警告,有的话及时修正。清理构建缓存与重新签名
更新Xcode后,旧的构建缓存和签名文件很容易和新系统不兼容,试试这套标准操作:- 关闭Xcode,找到Derived Data文件夹(通过
Xcode > 设置 > 位置能看到路径,直接删掉整个文件夹) - 在真机上卸载当前安装的应用
- 回到Xcode,按
Cmd+Shift+K清理构建文件夹 - 重新选择真机设备,先执行
Product > Build For > Running,再点击运行按钮
- 关闭Xcode,找到Derived Data文件夹(通过
确认系统与Xcode的兼容性
检查你的iPhone系统版本是不是超过了当前Xcode支持的最高版本?比如Xcode 14.2最多支持iOS 16.2,如果你的iPhone更到了iOS 16.4,就会出现兼容性问题。这种情况要么升级Xcode到对应版本,要么把iPhone降级到Xcode支持的系统版本。另外,项目的Deployment Target别设得比真机当前系统版本高,比如真机是iOS 15,Deployment Target设成iOS 16肯定会崩。用僵尸对象检测精准定位问题
如果上面的方法都没解决,就打开Xcode的僵尸对象检测功能来抓具体的空指针:- 点击Xcode顶部的Scheme,选择「Edit Scheme」
- 左侧选「Run」,切换到「Diagnostics」标签
- 勾选「Zombie Objects」
- 重新运行真机,崩溃时会显示具体是哪个对象被过度释放或者访问了空内存,这样就能精准修复代码里的问题
内容的提问来源于stack exchange,提问作者Harry

