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里加:
如果是iOS 13+用SceneDelegate的项目,在FirebaseApp.configure()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
相关产品推荐
相关产品推荐

