You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 21:28:29