Iniciar sesión Registro
Anuncios
Tu espacio publicitario
Reserva este slot exclusivo para el periodo elegido.
Comprar publicidad →
Logotipo de la comunidad de telegram - Затишна Галера
Añadido 06 ene. 2025

Затишна Галера

@Zatishna_Galera
Número de suscriptores: 2 709
Fotos: 1,350
Videos: 431
Enlaces: 1,830
Descripción:
Голова Одеського центру розробки DataArt та Delivery Director, капітан Затишної Галери, ділитимуся: завданнями із співбесід (QA/Delivery/Management), статтями, вакансіями, новинами зі світу IT. Контакт: [email protected] ; Patreon: patreon.com/CozyGalley
Fuente

Затишна Галера | iOSКомпас 🧭1️⃣3️⃣7️⃣ Завдання 137Які основні lazy контейнери у Swift в...

Logotipo de la comunidad de telegram - Затишна Галера Затишна Галера @Zatishna_Galera
712 Vistas/Alcance 2026-01-14 11:50 Mensaje №2337
#iOSКомпас 🧭1️⃣3️⃣7️⃣ Завдання 137Які основні lazy контейнери у Swift ви знаєете?Доброго здровля мої любі друзі. З вами ваш незмінний ios розробник Сергій з @badlinkschannel.1️⃣ lazy var - ліниві властивості (Swift)Властивість не створюється під час ініціалізації об’єкта, а лише при першому зверненні.class Example { lazy var expensiveObject: Data = { print("Об’єкт створено") return Data() }()}let example = Example()print("Ще не створено")_ = example.expensiveObject 2️⃣ LazySequence та LazyCollection (Swift)Дозволяють уникати зайвих обчислень.let numbers = (1...1000).lazy.map { $0 * 2 }print(numbers.first!) 3️⃣ SwiftUI ліниві контейнериСтворюють дочірні в’ю лише тоді, коли вони з’являються в зоні видимості.🔣 LazyVStack та LazyHStack:ScrollView { LazyVStack { ForEach(0..<1000) { index in Text("Рядок \(index)") } }} 🔣 LazyVGrid та LazyHGrid:let columns = [GridItem(.flexible()), GridItem(.flexible())]ScrollView { LazyVGrid(columns: columns) { ForEach(0..<100) { index in Text("Елемент \(index)") } }} 4️⃣ UIKit - перевикористовувані таблиці та колекціїЕлементи створюються лише тоді, коли вони потрібні для відображення.🔣 UITableView:func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell( withIdentifier: "Cell", for: indexPath ) cell.textLabel?.text = "Рядок \(indexPath.row)" return cell} 🔣 UICollectionView:func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { let cell = collectionView.dequeueReusableCell( withReuseIdentifier: "Cell", for: indexPath ) return cell} 5️⃣ UIScrollView плюс reusable viewsПоширений патерн, коли в’ю створюються динамічно під час прокрутки.for i in 0..<100 { let label = UILabel() label.text = "Елемент \(i)" stackView.addArrangedSubview(label)} 6️⃣ UITableViewDiffableDataSource та UICollectionViewDiffableDataSourceОновлення даних застосовуються ефективно та без зайвих перезавантажень.var snapshot = NSDiffableDataSourceSnapshot<Section, Item>()snapshot.appendSections([.main])snapshot.appendItems(items)dataSource.apply(snapshot, animatingDifferences: true) 7️⃣ Swift Concurrency та AsyncLazy патерниЛіниве асинхронне завантаження даних.lazy var imageTask = Task { try await loadImage()} #️⃣ У підсумку, ліниві механізми в iOS охоплюють як мову Swift, так і SwiftUI та UIKit, і є ключовим інструментом для оптимізації продуктивності та пам’яті.@Zatishna_Galera