【发布时间】:2016-09-17 18:09:36
【问题描述】:
我昨天升级了 Firebase,现在遇到了一个非常不寻常的问题。当我运行模拟器时,我得到一个快速编译错误“Segmentation fault:11”这是描述错误的数百行代码,但它们绝对没有帮助。从错误中,我看到的唯一可能提供线索的是底部。它说:
1. While loading members for 'ProfileTableViewController' at <invalid loc>
2. While deserializing decl #101 (PATTERN_BINDING_DECL)
3. While deserializing decl #2 (VAR_DECL)
奇怪的是,我刚刚在上面输入的错误并不一致。提到的视图控制器在我使用 Firebase 的三个视图控制器之间旋转。
为了解决这个问题,我注释掉了 ProfileTableViewController 类中的所有代码,但我仍然在引用该视图控制器时遇到错误。在视图控制器中运行的唯一代码是:
import UIKit
import Firebase
import FirebaseDatabase
(我也在其他视图控制器中使用 FirebaseAuth)。
解决问题的方法是点击“清理”,重新启动 xcode,在启动时再次清理,然后运行程序。除非我对程序中的代码进行任何更改,否则一切都会正常工作。即使我所做的只是添加评论,错误也会再次出现。
不想每次写几行代码都要关闭xcode重启,又担心上传到应用商店会遇到问题。
我使用的是 XCode 7.3.1,我的部署目标是 9.3
非常感谢您提供的任何见解!谢谢!
【问题讨论】:
-
编译器产生“分段错误:11”?
-
问题导航器显示我的应用程序名称,然后是一个显示“Swift 编译错误”的下拉菜单和一个显示“由于信号导致命令失败:分段错误:11”的下拉菜单。编译器似乎编译所有视图控制器,然后出现一个错误,开始于:MergeSwiftModule normal arm64
-
我能够重新创建错误。每当我尝试在两个不同的视图控制器上引用数据库时都会创建错误。我在 ProfileTableView 控制器中使用“var ref:FIRDatabaseReference!”声明引用。然后在 viewWillAppear 方法中,我使用 ref = FIRDatabase.database().reference() 设置引用。当我在另一个视图控制器中执行相同操作时,将重新创建错误。一旦在程序中被提及两次,它就会出错。
-
我也在我的测试目标中一致地得到了这个。即使我完全删除 FirebaseStorage pod,我也根本无法运行测试。请参阅我的回答,了解我为修复应用程序本身的错误所做的工作。