Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад

Чем отличается convenience от designated?

Этот вопрос проверяет понимание различий между вспомогательными (convenience) и основными (designated) инициализаторами в Swift.

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

Designated — это основной инициализатор, который полностью инициализирует все свойства объекта и вызывает инициализатор суперкласса (если это класс). Convenience — это вспомогательный инициализатор, который вызывает другой инициализатор того же класса, чтобы упростить создание объекта.

Длинный ответ

Designated инициализаторы:

Это основные инициализаторы класса, которые должны инициализировать все свойства и вызывать инициализатор суперкласса, если класс наследуется. Каждый класс должен иметь хотя бы один designated инициализатор.
Пример:

class Person {
    var name: String
    var age: Int

    init(name: String, age: Int) { // designated
        self.name = name
        self.age = age
    }
}

 

Convenience инициализаторы:

Convenience инициализаторы используются для создания дополнительных способов инициализации объекта. Они должны обязательно вызывать другой инициализатор того же класса.
Пример:

class Person {
    var name: String
    var age: Int

    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }

    convenience init(name: String) { // convenience
        self.init(name: name, age: 0)
    }
}
let person = Person(name: "Alice")

Правила:

- Convenience инициализаторы должны вызывать другой инициализатор того же класса.

- Designated инициализаторы могут вызывать только инициализаторы суперкласса или инициализировать свойства.


Используйте designated для полной инициализации объекта, а convenience — для упрощения и создания дополнительных вариантов инициализации.

  • Аватар

    iOS Guru

    Roman Isakov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    2

  • Сложность:

    7

Навыки

  • Swift

Ключевые слова

#designated

#initializer

#convenience

#class

#initialization

#property

Подпишись на iOS Developer в телеграм

  • Аватар

    iOS Guru

    Roman Isakov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.