协议内的结构

时间:2017-03-03 03:34:58

标签: swift struct protocols

我有一个具有结构作为属性的协议:

struct Dimensions {
    var width: CGFloat
    var height: CGFloat
}

Protocol ShapeType {
    var dimensions: Dimensions {get set}
}

现在我有一个类,它是SKShapeNode的一个子类:

class Shapes: SKShapeNode, ShapeType {
    var dimensions: Dimensions

    override init {       // Error
        super.init()

        dimensions = Dimensions(width: 40, height: 40)
    }
}

我收到此错误:

Property 'self.dimensions' not initialized at super.init call

在课堂内使用结构的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

在Shapes类初始值设定项中调用super.init()方法之前,必须初始化self.dimensions

init(dimensions: Dimensions) {
    self.dimensions = dimensions
    super.init()
}