swift - 结构内部协议(protocol)

标签 swift struct protocols

我有一个协议(protocol),它有一个结构作为属性:

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

在类中初始化结构体的正确方法是什么?

最佳答案

在调用 Shapes 类初始化器中的 super.init() 方法之前,您必须先初始化 self.dimensions

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

关于swift - 结构内部协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42570169/

相关文章:

Swift 在协议(protocol)上的可比性

ios - 将 Swift 协议(protocol)作为另一个协议(protocol)函数的参数传递

swift - 快速实现socket.io-client

ios - 使用云工具包将图像上传到icloud会抛出错误ios

c - 为函数 C 中复制的指针赋值

c - 使用头文件 C 中定义的结构

c++ - 谷歌 Protocol Buffer 。 C++ 错误 : 'protobuf' does not name a type

swift - 如何在 Swift 中为私有(private)枚举编写一个 equal 方法

ios - Swift Stepper Action 更改同一单元格内的 UITextField 和 UILabel

go - 为这个用例构建 go 项目