Ответ
Convenience init — это вспомогательный инициализатор класса в Swift, который предоставляет альтернативный, упрощенный способ создания экземпляра. Он должен делегировать выполнение designated (основному) инициализатору того же класса.
Ключевые правила:
- Должен вызывать
self.init(designated init) того же класса. - Не может вызывать
super.init(это делает designated init). - Объявляется с ключевым словом
convenience. - Упрощает создание объектов, предоставляя значения по умолчанию для части параметров.
Пример:
class Person {
var name: String
var age: Int
// Designated init (основной)
init(name: String, age: Int) {
self.name = name
self.age = age
}
// Convenience init (вспомогательный)
convenience init(name: String) {
// Должен вызвать designated init
self.init(name: name, age: 0) // Устанавливает возраст по умолчанию
}
}
// Использование
let adult = Person(name: "Anna", age: 30) // Designated init
let child = Person(name: "Max") // Convenience init, age = 0