Назад к вопросам
Junior
104
questionbank
Для чего используется ключевое слово lazy в Swift?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Ключевое слово lazy используется для отложенной инициализации свойства. Это означает, что значение свойства не вычисляется при создании экземпляра структуры или класса, а только при первом обращении к этому свойству.
Преимущества использования lazy:
- Экономия ресурсов: Инициализация может быть дорогостоящей операцией (например, чтение файла, сетевой запрос), и если свойство не всегда используется, отложенная инициализация позволяет избежать ненужных вычислений и затрат памяти.
- Разрешение циклических зависимостей: В некоторых случаях, свойство
Аможет зависеть от свойстваБ, а свойствоБ— от свойстваА.lazyможет помочь разорвать такую зависимость.
Ограничения:
lazyсвойства должны быть изменяемыми (var), так как их значение устанавливается после создания экземпляра.lazyсвойства не могут быть константами (let).- Наблюдатели свойств (
didSet,willSet) не могут быть назначеныlazyсвойству.
Пример использования:
class DataFetcher {
// Имитация дорогостоящей операции
func fetchData() -> [String] {
print("Fetching data...")
return ["Item 1", "Item 2", "Item 3"]
}
}
class ViewController {
let dataFetcher = DataFetcher()
// Данные будут загружены только при первом обращении к 'data'
lazy var data: [String] = {
self.dataFetcher.fetchData()
}()
func displayData() {
print("Displaying data: \(data)")
}
func updateUI() {
// Тут data не используется, fetchData() не вызывается
print("Updating UI...")
}
}
let vc = ViewController()
// На этом этапе fetchData() еще не вызвана
vc.updateUI() // fetchData() все еще не вызвана
vc.displayData() // fetchData() будет вызвана здесь, при первом доступе к data
vc.displayData() // fetchData() больше не будет вызвана, используется кэшированное значение