При наличии базового класса, производного класса и расширения с удобным инициализатором компилятор выдает ошибку, если в базовый класс добавлен второй инициализатор, как показано ниже: sscce
#!/usr/bin/env swift
class A {
required init(a : Int){}
init(b: Int){} // when removing this initializer everything works fine
}
class B: A {
required init(a : Int){ super.init(a: a) }
}
extension A {
convenience init(c : Int) { self.init(a: c) }
}
let b: B = B(c: 1)
С двумя инициализаторами в базовом классе выдается следующая ошибка:
... error: incorrect argument label in call (have 'c:', expected 'a:')
let b: B = B(c: 1)
^~
a
Помимо сообщения об ошибке, которое не очень полезно в этом случае, я не совсем уверен, является ли это ожидаемым поведением или ошибкой в swift.
Информация о версии Swift:
Apple Swift version 5.0.1 (swiftlang-1001.0.82.4 clang-1001.0.46.5)
Target: x86_64-apple-darwin18.5.0