【问题标题】:Command failed due to signal: Segmentation fault: 11 | Xcode 7.2由于信号,命令失败:分段错误:11 | Xcode 7.2
【发布时间】:2015-12-16 08:41:25
【问题描述】:

我被要求将一个相当大的应用程序迁移到 Swift 2。编译器不断抛出分段错误:一个函数出现 11 个错误,出现在应用程序逻辑的不同模块中(唯一的区别是使用的变量):

func loadMoreContent() {

if let collection = self.ratingsCollection where collection.identifier != 0,
  let totalEntries = collection.totalEntries,
  let objects = self.ratings?.count where objects < totalEntries {

    self.ratingsCollection = nil

    collection.nextPage().onSuccess { (value) in

      if let collection = value as? Collection<Rating> {
        self.ratingsCollection = collection
      } else {
        self.ratingsCollection = Collection<Rating>(identifier: 0)
      }

      }.onFailure { error in
        self.ratingsCollection = Collection<Rating>(identifier: 0)
    }
  }
}

以下是错误本身:

1.  While type-checking 'loadMoreContent' at (path redacted).swift:46:3
2.  While type-checking expression at [(path redacted).swift:54:9 - line:64:9] 
    RangeText="collection.nextPage().onSuccess { (value) in

              if let collection = value as? Collection<Rating> {
                self.ratingsCollection = collection
              } else {
                self.ratingsCollection = Collection<Rating>(identifier: 0)
              }

              }.onFailure { error in
                self.ratingsCollection = Collection<Rating>(identifier: 0)
            }"

3.  While loading members for declaration 0x7fdda42ea2b0 at <invalid loc>
4.  While deserializing 'producer' (FuncDecl #340) 

乍一看,有人知道这个功能有什么问题吗?我应该添加它在 Xcode 6 / Swift 1.2 中没有变化的情况下编译。

【问题讨论】:

  • 你能找出 loadMoreContent 中的哪一行导致了故障吗?也许首先将所有内容注释掉并逐行添加。我的疯狂猜测是它与'as有关? Collection' 演员表。我认为了解更多有关您正在使用的 Collection 类的信息会有所帮助。
  • 奇怪的是,在我更新 ReactiveCocoa 后错误消失了,它甚至没有在 Collection 类或函数本身中使用......我猜是在没有移交的情况下接管一个废弃的项目的乐趣.非常感谢您的意见@nwales

标签: swift compiler-errors swift2 xcode7


【解决方案1】:

这是一个在 XCode7 中特别常见的拔毛错误。

有时通常的 XCode 愚蠢的错误协议(清理、XCode 重新启动、清理、构建)会修复它。然而,这通常是由于一行或多行有问题的代码造成的。这也不一定意味着代码中存在错误!

因此,在重新启动之前,有时按顺序撤消最近的更改并尝试在进行过程中进行构建有时很有用。如果自上次成功构建以来您的任何依赖项或框架已更新,则这些可能是候选对象。

有几件事似乎经常会产生此错误。因此,如果您可以找出会始终为您带来错误的特定问题,请简明扼要地添加到此列表中:

1) 在调用使用自动关闭的方法时使用加号运算符进行字符串连接(在对 XCGLogger 的调用中找到):

 public func myFunc(@autoclosure closure: () -> String?){
      // do something
 }

 someInstance.myFunc("Hi " + nameStr + "!")

2) 无法从子类调用 super.init(),尤其是当超类使用默认初始化程序时(您尚未显式创建自己的 init)

3) 不小心使用单个等号来测试相等性(使用 = 而不是 == ),尤其是在复杂的语句中,例如 this answer.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-20
    • 2015-12-16
    • 1970-01-01
    • 1970-01-01
    • 2015-12-18
    • 2017-02-06
    相关资源
    最近更新 更多