Назад к вопросам
Simbirsoft
Junior — Middle
77
Какие отличия между удобными (convenience) и назначения (designated) инициализаторами в Swift?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В Swift есть два типа инициализаторов: designated (назначенные) и convenience (удобные).
-
Designated инициализаторы — это основные инициализаторы класса, которые инициализируют все свойства класса и вызывают инициализатор суперкласса. Каждый класс должен иметь хотя бы один designated инициализатор.
-
Convenience инициализаторы — вспомогательные, упрощают создание объекта с определёнными параметрами, вызывают другие инициализаторы того же класса (обычно designated). Они не инициализируют все свойства напрямую.
Правила:
- Convenience инициализатор должен вызывать другой инициализатор того же класса.
- Designated инициализатор должен вызывать designated инициализатор суперкласса.
Пример:
class Vehicle {
var wheels: Int
// Designated
init(wheels: Int) {
self.wheels = wheels
}
// Convenience
convenience init() {
self.init(wheels: 4)
}
}