我使用迅速2.0,我有一个协议和在协议来创建的方法的缺省的实现的延伸部,该代码是作为休耕:协议扩展,突变功能
protocol ColorImpressionableProtocol {
var lightAccentColor: UIColor? {get set}
var accentColor: UIColor? {get set}
var darkAccentColor: UIColor? {get set}
var specialTextColor: UIColor? {get set}
mutating func adoptColorsFromImpresion(impresion: ColorImpressionableProtocol?)
}
extension ColorImpressionableProtocol {
mutating func adoptColorsFromImpresion(impresion: ColorImpressionableProtocol?){
lightAccentColor = impresion?.lightAccentColor
accentColor = impresion?.accentColor
darkAccentColor = impresion?.darkAccentColor
specialTextColor = impresion?.specialTextColor
}
}
我稍后在我的代码试图调用此方法和我得到的是一条错误:
“不能一成不变值使用可变成员:‘自我’是不可改变的”
的代码是休耕:
init(impresion: ColorImpressionableProtocol?){
super.init(nibName: nil, bundle: nil)
adoptColorsFromImpresion(impresion)
}
我能想到的唯一的事情就是在这种情况下'自我'是一种协议,而不是一类。然而,我必须错过一些东西来使这个概念发挥作用。一个由协议定义的方法的缺省实现,该协议编辑也由相同协议定义的值。
谢谢您的帮助和时间:)
我相信这是我正在尝试做的正确语法,Perfecto! 谢谢 – CWineland
我不得不问这是出于理智的缘故......还有什么可以实现一个协议,除了一个类,什么是防范?我只是没有看到任何其他的结果,但一个类符合它 – CWineland
@CWineland:协议也可以通过一个结构来实现。 –