Какие существуют два типа инициализаторов в Swift?

Designated Initializers (Назначенные инициализаторы): Основные инициализаторы, отвечающие за инициализацию всех свойств класса.

Короткий ответ

Что ответить на собеседовании

Designated Initializers (Назначенные инициализаторы): Основные инициализаторы, отвечающие за инициализацию всех свойств класса. У каждого класса должен быть хотя бы один такой инициализатор. Convenience Initializers (Удобные инициализаторы): Вспомогательные инициализаторы, которые упрощают создание экземпляров класса для определенных сценариев. Они должны вызывать другой инициализатор из того же класса (прямо или косвенно), пока не вызовут назначенного инициализатора.

Подробный разбор

Ответ с пояснениями

  1. Designated Initializers (Назначенные инициализаторы): Основные инициализаторы, отвечающие за инициализацию всех свойств класса. У каждого класса должен быть хотя бы один такой инициализатор.
  2. 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
    }
}

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее