Designated Initializers (Назначенные инициализаторы): Основные инициализаторы, отвечающие за инициализацию всех свойств класса. У каждого класса должен быть хотя бы один такой инициализатор. Convenience Initializers (Удобные инициализаторы): Вспомогательные инициализаторы, которые упрощают создание экземпляров класса для определенных сценариев. Они должны вызывать другой инициализатор из того же класса (прямо или косвенно), пока не вызовут назначенного инициализатора.
Какие существуют два типа инициализаторов в Swift?
Designated Initializers (Назначенные инициализаторы): Основные инициализаторы, отвечающие за инициализацию всех свойств класса.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
- Designated Initializers (Назначенные инициализаторы): Основные инициализаторы, отвечающие за инициализацию всех свойств класса. У каждого класса должен быть хотя бы один такой инициализатор.
- Convenience Initializers (Удобные инициализаторы): Вспомогательные инициализаторы, которые упрощают создание экземпляров класса для определенных сценариев. Они должны вызывать другой инициализатор из того же класса (прямо или косвенно), пока не вызовут назначенного инициализатора.
Пример:
class MyClass {
var value: Int
var text: String
// Designated Initializer
init(value: Int, text: String) {
self.value = value
self.text = text
}
// Convenience Initializer
convenience init(value: Int) {
self.init(value: value, text: "Default") // Calls the designated initializer
}
// Another Convenience Initializer
convenience init(text: String) {
self.init(value: 0, text: text) // Calls the designated initializer
}
}