Sobes.tech
Back to questions
Junior — Middle
78

Какие отличия между удобными (convenience) и назначения (designated) инициализаторами в Swift?

Companies where asked
SimbirsoftSimbirsoft

Answer from AI

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)
    }
}