swift - 我可以在 Swift 的协议(protocol)中实现默认初始化吗

标签 swift swift4 dry

我有各种各样的类,它们都遵循同一个协议(protocol)并共享相同的初始化方法。有没有办法在协议(protocol)中实现初始化?所以我不必在每个类中复制代码。这是我目前所拥有的

protocol someProtocol {
    init(data: Data)
}

class ObjectA: someProtocol {
    let data: Data
    required init(data: Data) {
        self.data = data
    }
}

class ObjectB: someProtocol {
    let data: Data
    required init(data: Data) {
        self.data = data
    }
}

最佳答案

您不能这样做,因为协议(protocol)和协议(protocol)扩展不知道符合它们的对象中的属性,因此您无法初始化所有故事属性。

我敢肯定还有其他关于类型推断的运行时原因,但这一个可能是最容易解释的。

关于swift - 我可以在 Swift 的协议(protocol)中实现默认初始化吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49117677/

相关文章:

ruby-on-rails - 在 Rails 中处理 View 和仅助手常量的最佳方法

ios - 类型 'GameScene' 没有成员 'handleTap(tapGesture:)'

swift - 在 Swift 中从类创建 JSON 对象

ios - 调用 `cgImageRepresentation()!.takeUnretainedValue()`后AVCapturePhoto逆时针旋转90

ios - 如何快速获取当前UTC时间

ios - 在离线 Google Map iOS 上集成 KML

iphone - 定义相同功能的两个委托(delegate)?

ios - View Controller 中没有观察到完成启动通知吗?

ios - UIImageView cornerRadius 没有让它变圆

php - CodeIgniter:多个应用程序,如何共享资源?