🇺🇦 iOS Dev UA - спільнота iOS розробників
前往频道在 Telegram
Перша україномовна спільнота iOS розробників 🇺🇦 👨💻Цікаві матеріали зі світу розробки для продуктів Apple. Статті по розробці на Swift та SwiftUI. Огляд нових технологій в розробці від Apple. чат: @iOSDevsUAChat Ідеї та пропозиції: @SergeyZhuravel
显示更多384
订阅者
无数据24 小时
+17 天
+1030 天
帖子存档
💡Про
non-sendable у Swift. Коли і чому це може бути корисно!
👉 https://www.massicotte.org/non-sendable
🇺🇦 iOSDevUA💡Ще одне приємне нововведення в Xcode 16
🚀 Тепер в асетах можна знайти всі місця в проєкті, де використовується картинка, за кілька секунд.
Використання: тап правою кнопкою миші + Find References to Item.
Легко можна знайти зайві ресурси + уникнути потенційних помилок (та ще й трохи заощадити час).
🇺🇦 iOSDevUA
💡Scrolling picker на SwiftUI
Гайд про те, як зробити компонент-рулетку на SwiftUI, яка буде скролитися завжди строго по сітці.
🇺🇦 iOSDevUA
💡Як автоматично виявляти memory leaks за допомогою UI-тестів
📖 Пол Піелла написав чудову розгорнуту статтю про те, як можна використовувати функціональність, доступну нам ще з Xcode 13 (тоді з’явилася опція xcodebuild, яка генерує memory graph кожного разу, коли тест XCTMemoryMetrics не проходить).
Ця функція залишилася непоміченою багатьма, хоча при правильному використанні це потужний інструмент для виявлення витоків пам’яті в додатках.
Саму статтю можна розбити на кілька важливих частин:
1️⃣ Написання самого тесту, що перевіряє використання пам’яті.
2️⃣ Генерація memory graph.
3️⃣ Аналіз результатів і розбір графа.
Тут стане в нагоді ще один матеріал про розбір вмісту XCResult.
🇺🇦 iOSDevUA
Hello iOS developers! New digest is here!
Hello everyone! New iOS weekly digest is here!
App design: 5 benefits of using system components
Building custom elements and ignoring the sometimes boring system components during app design can be appealing. However, these boring elements have many benefits you might not be aware of.
If you’ve read many of my technical articles, you might be surprised to hear that I’ve actually done a bachelor’s degree in Communication and Multimedia Design (CMD), also known as Interactive Media, in Amsterdam. I’ve had to teach myself coding on the side, resulting in a great mix of design and coding knowledge. In today’s article, I’ll share a few reasons why system components should not be overlooked:
https://www.avanderlee.com/optimization/app-design-5-benefits-of-using-system-components
Pickup in 3 minutes: Uber’s implementation of Live Activity on iOS
The 2022 WWDC keynote brought an unexpected surprise when Apple™ unveiled the new Live Activities feature, using Uber’s Rider app as a prominent example. This announcement generated excitement for the feature to come and set the stage for an exhilarating journey for our team.
What follows is the story of how we started designing for surfaces outside the app, the engineering problems we had to solve along the way, and ultimately how we measurably improved the experience of riders and drivers:
https://www.uber.com/en-LB/blog/live-activity-on-ios/?uclick_id=a322da25-5f8e-483c-ab44-fc54cb783c3c
Scrolling pickers in SwiftUI
Today we’ll be exploring the features that ScrollView carrying around since iOS 17 by building a value picker.
Breath some inspiration from this post and let’s get started:
https://uvolchyk.medium.com/scrolling-pickers-in-swiftui-de4a9c653fb6
Displaying Data with Table (Part I)
One of the most traditional ways of displaying data is through a table. Think about having to create one in a document, working with a spreadsheet, or (for the experienced dev) a database. That’s why the Table component is a powerful tool in the SwiftUI framework. It doesn’t take much code to get data beautifully laid out in our app.
A little more here and there and we can quickly add on features and styles to enhance the UX. We’ll explore that in Part II:
https://captainswiftui.substack.com/p/displaying-data-with-table-part-i
Olympic Logo in SwiftUI
https://medium.com/@alessandromanilii/olympic-logo-in-swiftui-dee37cbd53f1
How often do you use lazy keyword in your code? Maybe you need to refresh your knowledge about it? Here is the article for you
Lazy var in Swift explained with code examples
A lazy var is a property whose initial value is not calculated until the first time it’s called. It’s part of a family of properties in which we have constant properties, computed properties, and mutable properties.
A lazy property might be lesser known to beginners in Swift but are actually super valuable once you know when and how to use them. There are a few important things to learn so you know when to use which type of property:
https://www.avanderlee.com/swift/lazy-var-property
#Books
If you ever wondered about macOS development here is a book for you:
https://troz.net/books/macos_tutorials/
💡Конвертація XCTest у swift-testing
swift-testing-revolutionary – інструмент, який автоматично конвертує всі ваші XCTest у новий формат swift-testing. Працює як плагін для Xcode, так і як самостійний CLI тул. Поки що не підтримується ряд анотацій, але більшість тестів вже можуть бути сконвертовані.
🇺🇦 iOSDevUA
💡Як вирішити проблему з констрейнтами або як бути з помилками типу «will attempt to recover by breaking constraint»?
Багато хто вже використовує SwiftUI у продакшн або пет-проєктах. Незважаючи на це, UIKit нікуди не зникає, а проблеми з автолейаутом зустрічаються досить часто.
Хотів би нагадати про трюк, а точніше, мастхев-навичку при пошуку подібних проблемних в’ю за допомогою стандартних інструментів Xcode.
Якщо ви зустрінете таку помилку (або її варіації):
Will attempt to recover by breaking constraint <NSLayoutConstraint:0xb82d450 H:[UIButton:0xb82ad50]-(NSSpace(20))-| (Names: ‘|’:UIView:0xb82f360 )>Запустіть View Debugger і вставте айдішник проблемної в’ю у поле пошуку зліва внизу. Xcode автоматично підсвітить її, і вже після цього ви зможете спокійно усунути цю проблему. ⭐️ А ще є надзвичайно корисний сайт, який часто може допомогти в таких ситуаціях. 🇺🇦 iOSDevUA
💡Swift Foundation доступний у Swift 6 Nightly
Пам’ятаєте план Apple переписати Foundation на Swift? Так от, частково переписаний Swift Foundation вже доступний у нічних збірках Swift 6, причому підтримує навіть Linux та Windows.
🇺🇦 iOSDevUA
💡Swift Navigation: інструменти навігації від PointFree
PointFree випустили у відкритий доступ бібліотеку Swift Navigation — набір потужних інструментів для всіх платформ Swift (як натхнення використовувалися принципи SwiftUI).
За допомогою бібліотеки можна керувати навігацією в SwiftUI, UIKit та AppKit. Більш того, її можна використовувати і для платформ, відмінних від Apple, таких як Windows, Linux, Wasm тощо.
🛠 Інструментарій вже доступний на GitHub (1 900 ⭐️)
Приклади роботи доступні тут:
📖 Case Studies — колекція прикладів SwiftUI та UIKit, що демонструють API цієї бібліотеки.
📖 Inventory — багатосторінковий додаток зі списками, спливаючими вікнами та сповіщеннями.
🇺🇦 iOSDevUA
Знаєте, що це за макрос
@DebugDescription у Xcode 16?
Якщо ні, то ось стаття з деталями про це!
👉 https://digitalbunker.dev/debug-description-macro-xcode-16/
🇺🇦 iOSDevUA💡Issue Reporting – бібліотека для відображення попереджень у Xcode
Issue Reporting – нова бібліотека від Pointfree, яка допомагає швидко показувати попередження та асерти прямо з коду. Окрім відображення тултіпа, можна ще й автоматично активувати брейкпойнт у момент показу сповіщення.
🇺🇦 iOSDevUA
💡Виявлення flaky тестів у Tuist
Tuist тепер вміє визначати тести, які дають неконсистентні результати, хоча ні сам тест, ні тестований код не змінювалися.
🇺🇦 iOSDevUA
💡Якщо використовуєте SwiftUI, то, мабуть, знаєте про ScenePhase, які з’явилися ще в iOS 14. Це все про життєвий цикл додатка і роботу з ним. Для тих же цілей (приблизно) був і UIApplicationDelegateAdaptor. Ось стаття про всі ці взаємодії та про баги, які там є.
У статті розглядаються не лише iOS, а й macOS та баги, пов’язані з ними також.
👉 https://www.jessesquires.com/blog/2024/06/29/swiftui-scene-phase/
🇺🇦 iOSDevUA
💡Автор, чиї статті ми часто публікуємо, розповідає про те, як він наважився залишити основну роботу та піти у вільне плавання. У цьому йому, звичайно, допоміг його pet-проєкт, про який ми тут теж часто розповідали.
Тепер він заробляє на ньому і планує розвивати далі. І в цілому розповідає про шлях розвитку цього проєкту та як він дійшов до точки, коли і чому вирішив піти з компанії, де пропрацював 7,5 років 👍
👉https://www.avanderlee.com/general/from-side-project-to-going-indie/
🇺🇦 iOSDevUA
💡Думаю, багато хто знайомий з CAEmitterLayer, чи не так?
Натрапив на стару, але досить корисну статтю про CAEmitterBehavior. З допомогою цього класу можна гнучкіше налаштувати параметри анімації частинок CAEmitterLayer. Наприклад, Telegram використовує зв’язку з кількох behavior об’єктів для створення ефекту “спойлер”.
Цікаво, що з якоїсь причини Apple приховує існування такого інструменту, а документацію та доступ до неї можна отримати тільки за наявності Xcode 8.x.
🔗 Посилання на статтю
🇺🇦 iOSDevUA
💡Створення файлу з коду в буфері обміну в Xcode 16
Одна з найбільш приємних (якщо не топових) функцій у новому Xcode — нова можливість рефакторингу (і не тільки).
Наприклад, можна буквально за пару секунд скопіювати будь-який шматок коду і створити з нього файл за допомогою хоткею для вставки.
При цьому Xcode ще й сам підбере та задасть підходящу назву (наприклад, як на гіфці).
🇺🇦 iOSDevUA
🚀Анонсовано Swift Homomorphic Encryption, новий пакет, який підтримує обчислення в приватній хмарі з використанням найсучасніших криптографічних технік. 🕵️🤐
Детальніше читайте: https://www.swift.org/blog/announcing-swift-homomorphic-encryption/
🇺🇦 iOSDevUA
💡Патерни навігації у SwiftUI
NavigationStack покращив навігацію, забезпечивши динамічну та програмну маршрутизацію, а також з’явилися способи централізації маршрутів для всього додатка.
📖 У цій статті розглядаються загальні варіанти навігації, які можна використовувати при створенні додатків:
👉 Базова навігація при використанні List
👉 Динамічна програмна маршрутизація
👉 Глобальна маршрутизація в SwiftUI
👉 Реалізація навігації з використанням Environment Values
👉 Реалізація навігації для TabView.
🇺🇦 iOSDevUA
💡Анімації в SwiftUI — підбірка репозиторіїв на GitHub
Реалізація ефектів у додатках може бути одночасно і цікавою, і складною задачею.
У цій підбірці я додав кілька популярних репозиторіїв на GitHub, де можна подивитися на анімації та знайти натхнення:
🔗 Open SwiftUI Animations — 4 000 ⭐
🔗 SwiftUI-Animations — 1 800 ⭐
🔗 kavsoft-swiftui-animations — 460 ⭐
🇺🇦 iOSDevUA
Hello iOS developers! New digest is here!
Hello everyone! New iOS weekly digest is here!
If you ever thought about going indie do not miss this article from Antoine var der Lee about this success story:
https://www.avanderlee.com/general/from-side-project-to-going-indie
A Paywall Optimization Success Story
The motivation, process, and results of a recent paywall experiment that significantly boosted conversions for Foodnoms:
https://ryanashcraft.com/paywall-optimization-success-story/
Async await in Swift: The Full Toolkit
Today, we're going through the many techniques in the Swift Concurrency toolkit. We'll discuss theory when it's appropriate, but for each tool we'll also provide a context where it might be the best solution:
https://www.emergetools.com/blog/posts/swift-async-await-the-full-toolkit
Unfold's Modern Mobile Release Process and the Subtle Art of Making Them Boring
On the Unfold team at Squarespace, we build our mobile app for both iOS and Android, and our releases don't require much in the way of manual intervention or human oversight. In fact, we don’t have to give releases much thought at all:
https://engineering.squarespace.com/blog/2024/unfolds-modern-mobile-release-process-and-the-subtle-art-of-making-them-boring
If you ever worked with Objective-C, you probably have some opinion about using it, check this article about comparison Objective-C and Swift
Swift vs. Objective-C: Which is Better for iOS Development:
https://dev.to/ravi_makhija/swift-vs-objective-c-which-is-better-for-ios-development-om3
Unobtrusive and testable issue reporting
Developers from PointFree are happy to anounce about creating a new library: Issue Reporting. This library provides tools to report issues in your application and library code as Xcode runtime warnings, breakpoints, assertions, and do so in a testable manner:
https://www.pointfree.co/blog/posts/147-unobtrusive-and-testable-issue-reporting
现已上线!2025 年 Telegram 研究 — 年度关键洞察 
