Xcode 7编译错误:“由于信号命令失败:分段错误:11”

时间:2015-09-18 06:45:09

标签: swift compilation xcode7

昨天我安装了正式的Xcode 7,当我试图打开我的一个Swift项目时,出现了一个警告,说新的Xcode版本想要更新我的swift代码(或类似的东西)。好吧,我接受并在此之后出现"Command failed due to signal: Segmentation fault: 11"编译错误(如果你想了解详细信息,我可以编写整个错误文本)。任何人都有同样的问题吗?

由于

被修改

我安装了Xcode 6.4,没关系,没有编译错误。

25 个答案:

答案 0 :(得分:11)

Omg,这是Xcode的一个很棒的错误。刚看完这个。 http://blog.bellebethcooper.com/xcode-bug.html 它让我微笑。

  

这个变化看起来很小,但实际情况就是这样(在我的API客户端类中,实际上我从API获取了JSON数据):

     

我改变了这个:

`let json = try? NSJSONSerialization.JSONObjectWithData(data, options: [])`
     

到此:

`let json = try? NSJSONSerialization.JSONObjectWithData(data, options: []) as! [String: AnyObject]`
     

这是我曾经遇到的最令人沮丧的调试经历之一   我有,但我希望这篇文章可以帮助那些拥有相同内容的人   问题。如果你最终通过谷歌搜索一个你正在努力的错误   我并没有帮助你,我很抱歉。我确切知道是什么   你正在经历。不要放弃!

答案 1 :(得分:7)

这表示您的代码中缺少某些Required方法/ func。 在我的情况下,我使用的是ObjectMapper,在我的课堂上,我忘记了required init()方法导致"Command failed due to signal: Segmentation fault: 11"

required init?(_ map: Map) {

}

答案 2 :(得分:6)

看看你看到的另一个警告。

我的案例指出了iOS9和GoogleAds的问题。 见这里:https://developers.google.com/admob/ios/ios9

简短回答是禁用构建设置ENABLE_BITCODE。

我的错误:

ld: '/pp/src/shared_js/libs/GoogleMobileAdsSdkiOS-7.3.1/GoogleMobileAds.framework/GoogleMobileAds(GADGestureIdUtil.o)' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture armv7
clang: error: unable to execute command: Segmentation fault: 11
clang: error: linker command failed due to signal (use -v to see invocation)

答案 3 :(得分:4)

在将各种项目转换为Swift3.0时,我多次遇到这个问题。

由于这个问题看起来很动态,每个人都有自己的解决方案,而不是任何通用答案。 但在这个问题上,主要的问题是找出工作点。 所以我所关注的内容如下:

  • 确定哪个方法导致错误

    点击错误讯息

enter image description here

  • 在这里,您将识别负责生成编译的错误的类 时间错误

    enter image description here

在我的情况下, AppDelegate 负责。

  • 要找到错误行,请转到长错误说明的结尾。您将找到类似下面的代码:

    1. While emitting IR SIL function @_TFC9MyProject11AppDelegate21getNotificationDetailfGSqGVs10DictionaryVs11AnyHashableP___T_ for 'getNotificationDetail' at /Users/ABC/Documents/BitBucket/iOS/2016/Projects/MyProject/AppDelegate/AppDelegate.swift:153:5

此处153AppDelegate.swift中的代码行。

func getNotificationDetail(_ launchOptions : [AnyHashable: Any]?) {
    if launchOptions != nil {
        let dictLaunch = launchOptions! as NSDictionary
        NotificationCenter.default.addObserver(self, selector: #selector(AppDelegate.openRespectiveNotificationScreen), name: NSNotification.Name(rawValue: WebServiceKey.APPMANAGER_SERVICE_CALL_FINISH), object: nil)

        inactiveUserInfo  = dictLaunch.object(forKey: UIApplicationLaunchOptionsKey.remoteNotification) as? NSDictionary
    }
}

然后注释方法中的所有代码并重新构建。然后尝试逐行取消注释,这样你最终会获得生成错误的行。

找到确切的代码行后,您可以轻松修复它。

在我的代码中,我发现此方法的最后一行会产生错误。

所以我用下面的代码替换它,它的构建成功。

inactiveUserInfo  = dictLaunch[UIApplicationLaunchOptionsKey.remoteNotification] as? NSDictionary

所以主要是谨慎调试。 试试这种方式,你肯定会轻易解决错误。

答案 4 :(得分:3)

首先,我建议仔细观​​察构建日志以找到有问题的文件。在我的例子中,for循环中使用的可选值导致构建过程出现Segmentation fault。

for i in 0..<hoge?.count {

我修改了我的代码,如下所示;

for i in 0..<hoge!.count {

我现在没有错误。 \(^ O ^)/

答案 5 :(得分:2)

仔细阅读调试信息。

我遇到了这个错误,因为我使用了一个&#39; =&#39;而不是双重&#39; =&#39; if语句中的错误。

if aString.characters.count = 2 {...}

答案 6 :(得分:1)

对我来说,问题(XCode 7.3.1)在字典项上使用了+ =运算符。

例如:

func test() {
    var myDict:[String:String] = [:]
    myDict["key"] = "pig"
    myDict["key"] += "dog"

    var myArray:[String] = []
    myArray.append("pig")
    myArray[0] += "dog"
 }

这会导致分段错误。删除myDict上的+ =,一切正常。

我知道这是一个错误(字典引用可以为空)但是编译器不应该像这样废弃。

答案 7 :(得分:1)

由于以下原因,我遇到了同样的错误:

 let stringB: String? = stringA.characters.count = 0 ? nil : stringA

解决方案是将其更改为:

 let stringB: String? = stringA.characters.count > 0 ? stringA : nil

也许这有助于某人...

答案 8 :(得分:1)

我在Xcode版本7.3(7D175)中遇到了这个编译错误,这是一个快速的项目。以下是该方案:

  1. 在swift类中宣布“@objc协议”
  2. 在另一个实现此协议的类中,未实现其中一个非可选方法
  3. 实施该方法为我解决了问题。这可能是人们面临这个问题的原因之一。我希望这有助于

答案 9 :(得分:1)

我遇到了同样的问题。 Xcode 7.2.1。选择错误并扩展日志我可以发现编译错误隐藏在长路径中。

查看&#34; 1之后的行。&#34;在附图中。它有一个文件和一行的引用。看着它,我可以找到错误。

就我而言,我的枚举赋值无效,我将一些逻辑从结构移动到枚举并注入了这个错误:

我有:

return .Success(dict: dict)

我应该:

return .Success(dict)

Log error after selecting it in the Issue Navigator

答案 10 :(得分:0)

对我来说,这是因为在最后一堂课中宣布一个结构而引起的。扩展:

final class X {
    ...
} 

extension X {
    struct Y {
        ...
    }
}

答案 11 :(得分:0)

对我来说:

在使用此Cast closures/blocks函数后,我将Closure用作AnyObject。错误解决了。

typealias UserCallBack = () -> Void
...
if let callBack = callBack as? AnyObject {
  request?.userInfo["callBack"] = callBack
}

答案 12 :(得分:0)

以下是我如何修复 - 首先如此处的许多建议,请仔细阅读日志。它实际上会告诉您它正在失败的行号以及它失败的原因。只是评论该线路解决了问题。在我的情况下,这是一个类型检查错误。 我正在使用Gloss结构进行JSON解析,看起来随着您在JSON层次结构中的深入,有时内联解析器无法识别出存在编译时问题。在构建项目时,它失败了。理想情况下,类型检查错误应该由内联解析器识别。所以这可能是Xcode的问题,但它的代码却打破了它。 当我阅读很多帖子时 - 我的分析如下。根本原因与类型检查有关。 当您尝试分配不正确的类型(可选或其他)时,内联解析器在某些情况下无法识别它。在构建时,它确实识别并导致分段错误。我们的代码错误,尽管Xcode有错误,如果我们仔细阅读日志就可以修复它!

答案 13 :(得分:0)

在我的情况下,我必须纠正的演员类似于Murat Yasar的回答(https://stackoverflow.com/a/36867502/512403),但是我有两个要纠正的部分。 编译器无法使用原始修复程序,因此我不得不稍微调整一下代码:

糟糕的版本:

let jsonObject: AnyObject? = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.AllowFragments)

好的版本:

let jsonObject = try? NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.AllowFragments) as! [String: AnyObject]

也许这可以帮助那些对Swift这些怪癖感兴趣的人。

答案 14 :(得分:0)

我有一个项目,它不时发生在同一个文件中。我的解决方法是:

转到分段错误提到的文件,注释掉所有导入,运行(显然构建失败),取消注释所有导入 - &gt;建立成功。

我的导入是Firebase和FirebaseAuth,如果它可以帮助任何人。

答案 15 :(得分:0)

尝试使用Xcode 8.2.1编译时收到此错误。我正在使用Cocoa Pod并且怀疑其中一个pod是问题,因为一些pod的文件在编译器的冗长错误输出中被引用。退出Xcode并在我的项目目录中运行pod update(通过终端)后,我能够在重新打开项目时成功编译。

答案 16 :(得分:0)

不幸的是,我总是遇到和你一样的错误。我建议最好的方法是通过新的Xcode重新创建一个新项目并将所有代码移植到这个新项目中,问题将解决。顺便说一下,在更新了像framework或xcode之类的任何地方之后,可能会发生这个错误,苹果很蠢。

答案 17 :(得分:0)

对我而言,它是一个包含测试数据数组的冗长函数。

答案 18 :(得分:0)

对我来说,问题在于改变我检查某些事情是否错误的方式。而不是:

if object1.hidden == false {
}

更改为:

if object1.hidden != true {
}

答案 19 :(得分:0)

我试图利用??当这发生在我身上时,我会以一种聪明的方式。

我猜swift不喜欢你试图链多个?虽然语法高亮显示器不会抛出任何错误,但仍然可以一起使用:

let ageNum = self.ageValue > 0 ?? self.birthday?.ageFromDate() ?? 0

答案 20 :(得分:0)

我试图将NSData写入文件,如下面的代码。

 if let currentResumeData = currentUserInfo["NSURLSessionDownloadTaskResumeData"]
 {
     // the following "do" was giving the above mentioned compile error.
     do {
         try currentResumeData.writeToFile(fileNameString, options: .DataWritingAtomic)
     } catch {}
     // the above error code.
 }

在阅读StackOverflow上的各种答案后,我将其更改为under,这样就删除了错误。

 if let currentResumeData:NSData = currentUserInfo["NSURLSessionDownloadTaskResumeData"] as? NSData {
 {
     do {
         try currentResumeData.writeToFile(fileNameString, options: .DataWritingAtomic)
     } catch {}
 }

如您所见,编译器需要适当的NSData类型的变量“currentResumeData”来调用它的方法.writeToFile。

我相信,这对其他人有帮助。

答案 21 :(得分:0)

重启xcode。清理构建(cmd + k,cmd + shift + k和清理构建文件夹 - &gt;选项+ cmd + shift + k)它应该解决问题。

答案 22 :(得分:0)

升级到xCode 7后,我的项目出现了同样的错误。我决定删除新版本的xCode并安装xCode 6.4。毕竟,它使用xCode 6.4工作正常,所以我建议你这样做。另一方面,你应该总是最新的,但你也可以同时拥有xCode 6.4和7.0 :)希望这对你有用!

答案 23 :(得分:0)

您是否尝试重新打开项目和/或重新添加计划?我做到了,错误消失了。

答案 24 :(得分:-1)

错误与下一版Xcode同时消失。经过对苹果论坛的一些研究,该版本的“#34; best&#34; IDE,Xcode。希望所有的答案都能帮助别人。