iOS相机调用触发Terminated signal9错误,求排查解决方案
解决SwiftUI调用相机/相册时出现“Terminated due to signal 9”错误的方案
Signal 9表示应用被系统强制终止,结合你的场景,以下是针对性的解决步骤:
1. 补全Info.plist权限配置
你仅提到配置了相机权限,但调用相册也需要对应权限,缺少会触发崩溃。需在Info.plist中添加以下两个键:
NSCameraUsageDescription:相机使用说明(已配置可忽略)NSPhotoLibraryUsageDescription:相册读取使用说明
若应用需要保存图片到相册,还需额外添加NSPhotoLibraryAddUsageDescription。
2. 避免在模拟器调用相机
iOS模拟器无真实相机硬件,直接调用会导致应用崩溃。需在代码中添加相机可用性判断,修改ContentView中相机按钮的逻辑:
.default(Text("Camera")) { if UIImagePickerController.isSourceTypeAvailable(.camera) { self.showImagePicker = true self.sourceType = .camera } else { // 可添加Alert提示用户设备无相机 print("相机不可用") } }
3. 修复代码中的强制解包风险
ContentView里的UIImage(named: "placeholder")!使用了强制解包,若placeholder图片不存在会触发崩溃,改为可选绑定处理:
Image(uiImage: image ?? UIImage(named: "placeholder") ?? UIImage()) .resizable() .frame(width: 300, height: 300)
或确保placeholder图片已正确添加到项目资源中。
4. 清理Xcode缓存
Xcode缓存可能引发异常,执行以下操作:
- 关闭Xcode和模拟器
- 删除Derived Data:前往
~/Library/Developer/Xcode/DerivedData删除对应项目的文件夹 - 重启Xcode后重新编译运行
内容的提问来源于stack exchange,提问作者Riki Chhetri
相关产品推荐
相关产品推荐

