zdefiniowałem prostą klasę:Jak spełnić protokół zawierający inicjator?
class MyClass {
var name:String?
required init() {
println("init")
}
}
mogę dodać nowy inicjator w przedłużeniu tak:
extension MyClass {
convenience init(name: String) {
self.init()
self.name = name
}
}
Wszystko działa poprawnie.
Ale jak tylko zdefiniować nowy inicjator w protokole:
protocol MyProtocol {
init(name:String)
}
I make my rozszerzenie potwierdzić tego protokołu:
extension MyClass : MyProtocol {
convenience init(name: String) {
self.init()
self.name = name
}
}
pojawia się następujący błąd:
Initializer requirement 'init(name:)' can only be satisfied by a
required
initializer in the definition of non-final class 'MyClass'
Co dzieje się tutaj?
(BTW. Nie mogę wykonywać moją klasę final
, ponieważ jest to tylko wyciąg z bardziej skomplikowanych przypadków użycia)
Może to być w tej chwili problem: https://devforums.apple.com/message/1057171#1057171 – Klaas