Junior — Middle
Swift'te kolaylık başlatıcısında super metodunu çağırmak mümkün mü?
sobes.tech yapay zeka
AI'dan gelen yanıt
Swift'te super.init çağrısı convenience initializer yapıcısında doğrudan mümkün değildir. Swift'teki başlatma kurallarına göre, convenience başlatıcılar aynı sınıfın başka bir başlatıcısını çağırmalı, üst sınıfın başlatıcısını değil.
Yalnızca designated initializer (ana başlatıcı) super.init çağırabilir. Bu nedenle, convenience başlatıcı önce kendi sınıfının designated initializer'ını çağırmalı ve o da super.init çağırmalıdır.
Örnek:
class Parent {
init() {
print("Parent init")
}
}
class Child: Parent {
override init() {
super.init() // designated initializer'da üst sınıfı çağırma
print("Child designated init")
}
convenience init(param: Int) {
self.init() // kendi sınıfının designated initializer'ını çağırma
print("Child convenience init param ile \(param)")
}
}
let c = Child(param: 5)
Burada, convenience init self.init()'i çağırır ve self.init() super.init()'i çağırır.