【发布时间】:2015-12-05 23:08:30
【问题描述】:
我使用的是swift 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
}
}
我稍后在我的代码中尝试调用此方法并收到错误消息:
"不能对不可变值使用可变成员:'self' 是不可变的"
代码如下:
init(impresion: ColorImpressionableProtocol?){
super.init(nibName: nil, bundle: nil)
adoptColorsFromImpresion(impresion)
}
我唯一能想到的是,在这种情况下,“Self”是一个协议,而不是一个类。但是我必须遗漏一些东西才能使这个概念发挥作用,由协议定义的方法的默认实现,该协议编辑也由同一协议定义的值。
感谢您的帮助和时间:)
【问题讨论】:
标签: ios iphone swift protocols ios9