Типы инициализаторов в Swift
В Swift инициализаторы — это специальные методы, которые вызываются при создании экземпляра класса, структуры или перечисления. Они используются для настройки начального состояния экземпляра и могут принимать параметры для настройки процесса инициализации.
В Swift есть два типа инициализаторов: назначенные инициализаторы и удобные инициализаторы. Давайте подробнее рассмотрим каждый из них и посмотрим, чем они отличаются.
Назначенные инициализаторы
Назначенные инициализаторы — это основной способ инициализации нового экземпляра класса, структуры или перечисления. Они отвечают за инициализацию всех свойств экземпляра и перед этим должны вызвать назначенный инициализатор суперкласса.
Вот пример назначенного инициализатора для простого Person
класса:
class Person {
let name: String
let age: Int
init(name: String, age: Int) {
self.name =name self.age = age
}
}
Удобные инициализаторы
Удобные инициализаторы — это вторичные инициализаторы, предоставляющие ярлык для инициализации экземпляра класса, структуры или перечисления. Они должны вызвать назначенный инициализатор того же класса, прежде чем делать что-либо еще. Короче говоря, мы используем его для удобства инициализации.
Вот пример удобного инициализатора для Person
класса:
class Person {
let name: String
let age: Int
init(name: String, age: Int) {
self.name =name
self.age = age
}
convenience init(name: String) {
self.init(name: name, age: 0)
}
}
Заключение
Таким образом, назначенные инициализаторы являются основным способом инициализации нового экземпляра класса, структуры или перечисления и отвечают за инициализацию всех свойств экземпляра. Удобные инициализаторы обеспечивают ярлык для инициализации экземпляра с определенным набором параметров и должны вызывать назначенный инициализатор того же класса, прежде чем делать что-либо еще.
Понимая разницу между назначенными и удобными инициализаторами, вы можете писать более эффективный и действенный код и легче создавать экземпляры своих классов, структур и перечислений.
Пожалуйста, хлопайте и подписывайтесь, если вам понравился этот пост.