Ios 编译Swift项目时,由于信号:分段错误:11,命令失败
我想用iOS做一个俄罗斯方块游戏项目。但在这张照片中,我面临着这个问题。Xcode发生此错误,我无法修复它。我曾经认为,一个Shape类有7个不同的Shape子类,我将它们划分在包含Shape类的8个文件中,这可能会发生此错误。然后我把它们都放在一个文件里。然而,这种情况再次发生 以下是我的一些代码:Ios 编译Swift项目时,由于信号:分段错误:11,命令失败,ios,xcode,swift,Ios,Xcode,Swift,我想用iOS做一个俄罗斯方块游戏项目。但在这张照片中,我面临着这个问题。Xcode发生此错误,我无法修复它。我曾经认为,一个Shape类有7个不同的Shape子类,我将它们划分在包含Shape类的8个文件中,这可能会发生此错误。然后我把它们都放在一个文件里。然而,这种情况再次发生 以下是我的一些代码: class Shape: Hashable, CustomStringConvertible{ let color: BlockColor var blocks = Array&
class Shape: Hashable, CustomStringConvertible{
let color: BlockColor
var blocks = Array<Block>()
var orientation: Orientation
var column: Int = 0
var row: Int = 0
// 每个块中的每个小块的位置
var blockColRowPositions: [Orientation: Array<(col: Int, row: Int)>]{
return [:]
}
// 每个块在底部的形状
var bottomBlocksForOrientations: [Orientation: Array<Block>]{
return [:]
}
var bottomBlock: Array<Block>{
guard let bottomBlocks = bottomBlocksForOrientations[orientation] else{
return []
}
return bottomBlocks
}
var hashValue:Int{
return blocks.reduce(0) {$0.hashValue ^ $1.hashValue}
}
var description:String{
return "\(color) block facing \(orientation) : \(blocks[firstIndex]), \(blocks[secondIndex]), \(blocks[thirdIndex]), \(blocks[forthIndex])"
}
// ....
}
类形状:可散列,可自定义{
让颜色:块颜色
var blocks=Array()
方向:方向
变量列:Int=0
变量行:Int=0
// 每个块中的每个小块的位置
变量blockColRowPositions:[方向:数组]{
返回[:]
}
// 每个块在底部的形状
var bottomBlocksForOrientations:[方向:数组]{
返回[:]
}
var底部块:数组{
guard let bottomBlocks=底部块定向[定向]其他{
返回[]
}
返回底块
}
var hashValue:Int{
返回块.reduce(0){$0.hashValue^$1.hashValue}
}
变量说明:字符串{
返回“\(颜色)块朝向\(方向):\(块[firstIndex]),\(块[secondIndex]),\(块[thirdIndex]),\(块[forthIndex])”
}
// ....
}
O_类形状:形状{
// 每个块中的每个小块的位置
覆盖变量blockColRowPositions:[方向:数组]{
返回[
方向0:[(0,0),(1,0),(0,1),(1,1)],
方向四分之二:[(0,0),(1,0),(0,1),(1,1)],
方向四分之一:[(0,0),(1,0),(0,1),(1,1)],
第六节:[(0,0)、(1,0)、(0,1)、(1,1)]
]
}
重写变量bottomBlocksForOrientations:[方向:数组]{
返回[
Orientation.zero:[块[thirdIndex],块[forthIndex]],
Orientation.twoQuater:[块[thirdIndex],块[forthIndex]],
Orientation.fourQuater:[块[thirdIndex],块[forthIndex]],
Orientation.sixQuater:[块[thirdIndex],块[forthIndex]]
]
}
}
图片显示它在编译过程中崩溃。这在Swift中曾经是一个相当常见的现象,但现在不太常见了
首先要确保您使用的是最新版本的Xcode,即7.2.1
如果编译崩溃仍在发生,您可以通过找出导致崩溃的代码行来解决问题。我经常这样做,注释掉整个文件,然后逐个取消注释,直到它导致崩溃
然后你需要找到重写代码的方法以避免崩溃,你还需要向Apple@发送错误报告。不管你向它抛出什么代码,编译器都不应该崩溃,如果你的代码错误,它应该会产生错误消息。首先,谢谢你回答我的问题。我已经按照你的建议做了。当我在评论子类的代码时,问题就解决了。但我需要的是那些子类的代码。没有那些子类。我必须想其他的方法在我的俄罗斯方块游戏中添加新的形状。我认为创建一个子类来继承SHAPE类是非常自然的。你能不能点其他的方法来解决这个问题?我将非常感谢你@朱晨希 子类中的哪些位实际上导致了崩溃?我真的不知道如何读取崩溃消息。我对每个子类都进行了注释,每个子类都可能导致崩溃。如果你能读到崩溃消息,这并不重要。尝试取消其中一个类的注释,但注释其中的所有内容,然后取消其中的所有内容的注释,直到崩溃。那天我尝试过,最后,我将字典符号“[]”更改为“dictionary”。我把它换了以后,撞车就不见了。总之,谢谢你的帮助。
class O_Shape: Shape {
// 每个块中的每个小块的位置
override var blockColRowPositions: [Orientation: Array<(column: Int, row: Int)>] {
return [
Orientation.zero: [(0,0),(1,0),(0,1),(1,1)],
Orientation.twoQuater: [(0,0),(1,0),(0,1),(1,1)],
Orientation.fourQuater: [(0,0),(1,0),(0,1),(1,1)],
Orientation.sixQuater: [(0,0),(1,0),(0,1),(1,1)]
]
}
override var bottomBlocksForOrientations: [Orientation: Array<Block>] {
return[
Orientation.zero: [blocks[thirdIndex], blocks[forthIndex]],
Orientation.twoQuater: [blocks[thirdIndex], blocks[forthIndex]],
Orientation.fourQuater: [blocks[thirdIndex], blocks[forthIndex]],
Orientation.sixQuater: [blocks[thirdIndex], blocks[forthIndex]]
]
}
}