昨天我安装了正式的Xcode 7,当我试图打开我的一个Swift项目时,出现了一个警告,说新的Xcode版本想要更新我的swift代码(或类似的东西)。好吧,我接受并在此之后出现"Command failed due to signal: Segmentation fault: 11"
编译错误(如果你想了解详细信息,我可以编写整个错误文本)。任何人都有同样的问题吗?
由于
被修改
我安装了Xcode 6.4,没关系,没有编译错误。
答案 0 :(得分:11)
这个变化看起来很小,但实际情况就是这样(在我的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时,我多次遇到这个问题。
由于这个问题看起来很动态,每个人都有自己的解决方案,而不是任何通用答案。 但在这个问题上,主要的问题是找出工作点。 所以我所关注的内容如下:
确定哪个方法导致错误
点击错误讯息
在我的情况下, 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
此处153
是AppDelegate.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)中遇到了这个编译错误,这是一个快速的项目。以下是该方案:
实施该方法为我解决了问题。这可能是人们面临这个问题的原因之一。我希望这有助于
答案 9 :(得分:1)
我遇到了同样的问题。 Xcode 7.2.1。选择错误并扩展日志我可以发现编译错误隐藏在长路径中。
查看&#34; 1之后的行。&#34;在附图中。它有一个文件和一行的引用。看着它,我可以找到错误。
就我而言,我的枚举赋值无效,我将一些逻辑从结构移动到枚举并注入了这个错误:
我有:
return .Success(dict: dict)
我应该:
return .Success(dict)
答案 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。希望所有的答案都能帮助别人。