Junior — Middle
Оё имкон дорад, ки дар конструктори convenience initializer дар Swift усули super-ро даъват кард?
sobes.tech AI
Ҷавоб аз AI
Дар Swift, да се извика super.init в конструктор convenience initializer не е възможно директно. Според правилата за инициализация в Swift, convenience инициализаторите трябва да извикват друг инициализатор от същия клас, а не този на суперкласа.
Само designated initializer (основният инициализатор) може да извика super.init. Следователно, convenience инициализаторът трябва първо да извика designated инициализатора на своя клас, който от своя страна ще извика super.init.
Пример:
class Parent {
init() {
print("Parent init")
}
}
class Child: Parent {
override init() {
super.init() // извикване към суперкласа в designated инициализатор
print("Child designated init")
}
convenience init(param: Int) {
self.init() // извикване към designated инициализатор на своя клас
print("Child convenience init с параметър \(param)")
}
}
let c = Child(param: 5)
Тук convenience init извиква self.init(), а self.init() извиква super.init().