Ios 编译Swift项目时,由于信号:分段错误:11,命令失败

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&

我想用iOS做一个俄罗斯方块游戏项目。但在这张照片中,我面临着这个问题。Xcode发生此错误,我无法修复它。我曾经认为,一个Shape类有7个不同的Shape子类,我将它们划分在包含Shape类的8个文件中,这可能会发生此错误。然后我把它们都放在一个文件里。然而,这种情况再次发生

以下是我的一些代码:

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]]
        ]
    }

}