命令因信号而失败:分段错误:11 | Xcode 7.2
Command failed due to signal: Segmentation fault: 11 | Xcode 7.2
我被要求将一个相当大的应用程序迁移到 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.
这是在 XCode7 中特别常见的拉头发错误。
偶尔通常的 XCode 愚蠢的错误协议(清理,XCode 重新启动,清理,构建)修复它。然而,这通常是由于一行或多行有问题的代码造成的。这也不一定意味着代码中存在错误!
因此,在重新启动之前,有时按顺序撤消最近的更改并在进行过程中尝试构建很有用。如果自上次成功构建以来您的任何依赖项或框架已更新,这些可能是候选者。
有几件事似乎经常会产生此错误。因此,如果您可以找出经常导致错误的特定问题,请简明扼要地添加到此列表中:
1) 在对使用自动闭包的方法的调用中使用加号运算符的字符串连接(在对 XCGLogger 的调用中找到):
public func myFunc(@autoclosure closure: () -> String?){
// do something
}
someInstance.myFunc("Hi " + nameStr + "!")
2) 无法从 subclass 调用 super.init() 尤其是当 super class 使用默认初始化程序时(您尚未明确创建自己的初始化程序)
3) 意外使用单个等号来测试相等性(使用 = 而不是 == ),尤其是在 this answer.
等复杂语句中
我被要求将一个相当大的应用程序迁移到 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.
这是在 XCode7 中特别常见的拉头发错误。
偶尔通常的 XCode 愚蠢的错误协议(清理,XCode 重新启动,清理,构建)修复它。然而,这通常是由于一行或多行有问题的代码造成的。这也不一定意味着代码中存在错误!
因此,在重新启动之前,有时按顺序撤消最近的更改并在进行过程中尝试构建很有用。如果自上次成功构建以来您的任何依赖项或框架已更新,这些可能是候选者。
有几件事似乎经常会产生此错误。因此,如果您可以找出经常导致错误的特定问题,请简明扼要地添加到此列表中:
1) 在对使用自动闭包的方法的调用中使用加号运算符的字符串连接(在对 XCGLogger 的调用中找到):
public func myFunc(@autoclosure closure: () -> String?){
// do something
}
someInstance.myFunc("Hi " + nameStr + "!")
2) 无法从 subclass 调用 super.init() 尤其是当 super class 使用默认初始化程序时(您尚未明确创建自己的初始化程序)
3) 意外使用单个等号来测试相等性(使用 = 而不是 == ),尤其是在 this answer.
等复杂语句中