防止在Swift中扩展中实现的覆盖协议方法

时间:2017-07-01 17:20:03

标签: swift struct protocols

我正在使用结构来移动链接某些文本和颜色的特定数据格式。我保持这些耦合在一个结构而不是touple的原因是我需要有两个函数在struct和一个字典之间进行转换,以便我可以保存它。

问题是我在许多领域使用这个结构并保持正确的命名,我有多个这样的结构具有完全相同的实现,只是一个不同的名称。目前,该行为是在协议中定义的,但每个单独的结构都可以覆盖它。有没有办法禁止这个?

例如,TitleColorStructProtocol具有此功能的扩展程序

init(dictionary: Dictionary<String, Any>) {
    self.init()

    self.title = dictionary["title"] as! String

    if let red = dictionary["red"], let green = dictionary["green"], let blue = dictionary["blue"] {
        self.color = UIColor(colorLiteralRed: red as! Float, green: green as! Float, blue: blue as! Float, alpha: 1)
    }
}

没有理由为什么任何符合此协议的结构都应该覆盖此方法,所以我想“锁定”它,对类使用final关键字之类的东西。这可能吗?

0 个答案:

没有答案