我正在使用结构来移动链接某些文本和颜色的特定数据格式。我保持这些耦合在一个结构而不是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
关键字之类的东西。这可能吗?