Middle
Каква е разликата между conventions и designated?
sobes.tech AI
Отговор от AI
Инициализаторите за удобство са вторични, те могат да извикват само други инициализатори от същия клас, като в крайна сметка делегират извикването към определен инициализатор. Те се използват за добавяне на удобни начини за създаване на екземпляри.
Определените инициализатори са основните, те гарантират пълната инициализация на всички съхранявани свойства на класа (свои и на родителския). Те могат да извикват определени инициализатори на родителския клас. Всеки клас трябва да има поне един определен инициализатор.
class BaseClass {
var baseProperty: String
init(baseProperty: String) { // Определен инициализатор
self.baseProperty = baseProperty
}
}
class DerivedClass: BaseClass {
var derivedProperty: Int
init(baseProperty: String, derivedProperty: Int) { // Определен инициализатор
self.derivedProperty = derivedProperty
super.init(baseProperty: baseProperty) // Вика определен инициализатор на родителя
}
convenience init(baseProperty: String) { // Инициализатор за удобство
self.init(baseProperty: baseProperty, derivedProperty: 0) // Делегира към собствен определен инициализатор
}
convenience init() { // Инициализатор за удобство
self.init(baseProperty: "Default Base", derivedProperty: -1) // Делегира към собствен определен инициализатор
}
}