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

iOS开发求助:运行App触发Thread 1: signal SIGABRT错误

排查Thread 1: signal SIGABRT崩溃的几个关键方向

看起来你遇到的启动屏后崩溃+SIGABRT信号问题,虽然你怀疑是segue的问题,但这类错误通常来自容易被忽略的基础配置或关联问题,我结合你的代码和常见坑点给你梳理几个排查步骤:


1. 先确认Segue标识符的完全匹配

你在signupPressed方法里调用了performSegue(withIdentifier: "signup", sender: sender),先去Storyboard里做两个检查:

  • 选中这个segue,在右侧Attributes Inspector的「Identifier」字段里,确认拼写、大小写完全和"signup"一致(比如别写成"Signup"或"signUp",iOS对标识符是大小写敏感的)
  • 确认segue的起点是LoginViewController里的「注册按钮」,终点是你要跳转的注册页面,没有误连到其他控制器或控件

2. 排查IBOutlet/IBAction的失效关联

SIGABRT最常见的诱因就是Storyboard控件和代码的关联失效,你可以这么检查:

  • 打开LoginViewController的Storyboard场景,右键点击LoginViewController的黄色控制器图标
  • 在弹出的关联列表里,看看有没有带红色感叹号的条目——这表示该关联对应的代码已经不存在,或者连接到了错误的对象
  • 逐一确认emailField、pwField这两个IBOutlet确实和Storyboard里的文本框正确连接,没有重复绑定;signupPressed、liPressed这两个IBAction也确实绑定了对应按钮的「Touch Up Inside」事件

3. 检查Firebase的初始化配置

你导入了Firebase但没有做初始化操作,虽然登录代码里调用了Auth.auth(),但如果App启动时Firebase未正确初始化,也可能触发崩溃:

  • 确认GoogleService-Info.plist文件已经正确添加到项目根目录,并且在Build Phases的「Copy Bundle Resources」列表里能找到它(没有被排除)
  • 在App的初始化入口添加Firebase配置代码:
    如果是用AppDelegate的项目,在didFinishLaunchingWithOptions里加:
    FirebaseApp.configure()
    
    如果是iOS 13+用SceneDelegate的项目,在scene(_:willConnectTo:options:)方法里添加这段代码

4. 验证"usersVC"的Storyboard ID正确性

登录成功后你要跳转的usersVC,去Storyboard里确认:

  • 目标视图控制器的「Storyboard ID」字段完全是"usersVC",拼写和大小写不能错
  • 该视图控制器的Class属性已经正确设置为对应的代码类(比如UsersViewController)

5. 查看崩溃日志的具体信息

SIGABRT崩溃时,Xcode控制台会输出更精准的错误提示(比如Could not find a segue with identifier 'signup'或者unrecognized selector sent to instance),把这段完整日志贴出来,能直接定位问题根源!


代码小优化建议

你的登录代码里用了emailField.text!强制解包,虽然有guard判断非空,但用可选绑定会更安全(避免极端情况下的nil崩溃):

@IBAction func liPressed(_ sender: Any) {
    guard let email = emailField.text, !email.isEmpty, 
          let password = pwField.text, !password.isEmpty else {
        return
    }
    Auth.auth().signIn(withEmail: email, password: password) { user, error in
        if let error = error {
            print(error.localizedDescription)
            return
        }
        if let user = user {
            let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "usersVC")
            self.present(vc, animated: true, completion: nil)
        }
    }
}

内容的提问来源于stack exchange,提问作者Dominic Roberts

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:51:11