Назад к вопросам
Junior
124
questionbank

Как запустить код при создании экземпляра класса?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Используя инициализаторы.

class MyClass {
    var property: String

    init(property: String) { // Инициализатор
        self.property = property
        // Здесь можно выполнять дополнительный код при создании экземпляра
        print("Экземпляр MyClass создан с property: \(property)")
    }
}

let instance = MyClass(property: "Пример") // Вызов инициализатора при создании

Инициализаторы могут быть:

  • Designated Initializers: Основные инициализаторы, полностью инициализирующие все свойства.
  • Convenience Initializers: Вспомогательные инициализаторы, вызывающие designated initializers, чтобы упростить создание экземпляра.
  • Failable Initializers: Инициализаторы, которые могут вернуть nil в случае ошибки инициализации.
class AnotherClass {
    var count: Int

    init?(count: Int) { // Failable initializer
        if count < 0 {
            return nil // Инициализация не удалась
        }
        self.count = count
    }

    convenience init(stringCount: String) { // Convenience initializer
        if let intCount = Int(stringCount) {
            self.init(count: intCount)! // Вызов designated initializer
        } else {
            self.init(count: 0)! // Предоставляем значение по умолчанию или обрабатываем ошибку
        }
    }
}

let validInstance = AnotherClass(count: 10) // Инициализация успешна
let invalidInstance = AnotherClass(count: -5) // Инициализация вернула nil