cfi*_*her 7 compiler-errors protocols initialization swift
如果您尝试protocol在包含a的Swift中创建一个convenience initialiser,您将立即被编译器骂:
protocol Zizo{
    convenience init(a:String, b:Int)
}
非类型中不允许使用便捷初始值设定项.
这种限制有什么理由吗?这对我来说没有意义.
什么可能出错?
rin*_*aro 10
这是因为,没有任何意义.protocol只定义实现者具有所需的方法和属性.它没有定义实现细节.如果protocol需要init(a:String, b:Int),你可以实现它即被指定的便利初始化,只要你喜欢.
protocol Zizo{
    init(a:String, b:Int)
}
class Foo:Zizo {
    init() {
    }
    convenience required init(a:String, b:Int) {
        self.init()
    }
}
class Bar:Foo {
    override convenience init() {
        self.init(a:"baz", b:42)
    }
    required init(a:String, b:Int) {
        super.init()
    }
}
正如你所看到的,protocol强制init(a:String, b:Int)是required初始化器,但对"方便"或"指定"没有任何作用.
| 归档时间: | 
 | 
| 查看次数: | 4188 次 | 
| 最近记录: |