Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Swift : designated, initializer, convenience, class, initialization, property

Чем отличается 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

    Swift

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

#designated

#initializer

#convenience

#class

#initialization

#property

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

  • Аватар

    iOS Guru

    Roman Isakov

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