🇺🇦 iOS Dev UA - спільнота iOS розробників
384 subscribers
399 photos
42 videos
9 files
959 links
Перша україномовна спільнота iOS розробників 🇺🇦

👨‍💻Цікаві матеріали зі світу розробки для продуктів Apple.
Статті по розробці на Swift та SwiftUI. Огляд нових технологій в розробці від Apple.

чат: @iOSDevsUAChat
Ідеї та пропозиції: @SergeyZhuravel
Download Telegram
Hello iOS developers! New iOS news digest is here!

First thing first, if you somehow missed or haven't seen it yet - Apple released new iPhones, updates to AirPods, new Apple Watches. My favourite update - hearing aid. What about yours? Share in the comments
https://www.cnbc.com/2024/09/09/apple-event-2024-live-updates-iphone-16-apple-watch-10.html

Have you ever failed with you application, site or startup? Maybe you chose wrong idea, launched too early or too late, do you think only small companies make huge mistakes? Not at all! Read this article to know how Google failed in 2008 when tried to launch Google Maps in India
Google Maps UX: The India Conundrum
When Google Maps expanded to India in 2008, it made a major blunder. Here’s how we quickly recovered from our mistake and creatively adapted Google Maps to work in India:
https://elizlaraki.substack.com/p/google-maps-ux-the-india-conundrum

Revolutionizing Surgery and Medical Treatments with visionOS
This article has been crafted as the theoretical companion to the Speculative Spatial Design Canvas, providing an in-depth exploration of the principles and concepts that underpin the canvas’s practical application. It aims to enrich your understanding and enhance your use of the canvas, ensuring you can apply it more effectively to create innovative and user-friendly spatial experiences:
https://www.createwithswift.com/revolutionizing-surgery-and-medical-treatments-with-visionos

Github contribution graph with Swift Charts
In 2022 Apple introduced a brand new SwiftUI framework — Swift Charts. You can use it to visualize data with rich customization and minimal code. Swift Charts is available in iOS 16+ and supports watchOS and macOS as well. In this article I'll guide you through recreating Github Contribution Graph. Let's start:
https://www.artemnovichkov.com/blog/github-contribution-graph-swift-charts

SwiftData Expressions
SwiftData gained support for predicate expression in iOS 18. How does it compare to the expressions we can use with Core Data? To learn more check the article:
https://useyourloaf.com/blog/swiftdata-expressions

Swift Testing: Validate your code using expressive APIs
Apple announced the Swift Testing framework during WWDC 2024. It transforms the way we write tests in Swift. A new clear, expressive API makes writing tests more straightforward, while the Xcode user interface communicates with improved feedback when a test fails or succeeds.
The testing framework embraces Swift Macros, reducing the boilerplate code you must write for repetitive tests. So-called parameterized tests help you run similar tests over a sequence of values. Hence, you no longer have to duplicate and maintain an almost identical test for a different input value. Let’s dive into how Swift Testing works and how you can use it today:
https://www.avanderlee.com/swift-testing/introducing-expressive-apis

The Future of Vapor
Discussing what the future holds for Vapor
https://blog.vapor.codes/posts/the-future-of-vapor
💡DebugDescription у Xcode 16: новий макрос для спрощення дебагу

Під час роботи з кастомними типами відладки може бути непростим завданням.

Для спрощення можна використовувати CustomDebugStringConvertible, який дозволяє налаштувати вивід в консоль у таких випадках.

А за допомогою макроса DebugDescription можна викликати debugDescription та перевірити детальний опис.

🇺🇦 iOSDevUA
💡Як автоматично локалізувати розділ «Що нового?» за допомогою App Store Connect API

При створенні нової версії додатку в App Store Connect ми зобов’язані вказувати якусь інформацію, яка змінюється нечасто (звичайно, якщо у вас немає SMM-команди, яка відповідає за гумор і репости скріншотів).

Раніше для цього широко використовували fastlane, але зараз все частіше я чую від колег про перехід на нативне API (деякі пишуть свою обгортку, інші використовують готові рішення).

Ці способи дозволяють заощадити трохи часу, зусиль і усунути людські помилки.

📖 У цій статті розповідається, як використовувати API App Store Connect для попереднього вказання інформації при створенні нової версії додатку.

🇺🇦 iOSDevUA
3
💡Робота з JSON у Swift: розширене керівництво

Парсинг JSON найчастіше є основою додатка для iOS, який використовує REST API.

Ділюся керівництвом, яке допоможе освіжити знання (складається з кількох глав, у кожній з яких є підрозділи з прикладами).

1️⃣ Як працювати з даними JSON у Swift.

2️⃣ Розширені техніки для парсингу складних даних.

3️⃣ Створення додатка SwiftUI, який завантажує та парсить JSON.

🛠 Проект повністю доступний і на GitHub.

🔗 А ось тут я писав про чотири корисні сервіси для спрощення роботи з JSON.

🇺🇦 iOSDevUA
💡Роадмап Vapor 5

Vapor – один з основних серверних фреймворків на Swift. Команда опублікувала роадмап на наступну мажорну версію, першу альфу якої планують випустити разом з Swift 6. Ключова зміна – повний перехід на Swift Concurrency, але також є й інші цікаві плани.

🇺🇦 iOSDevUA
1👍1🔥1
🎬Server-side Swift Meetup #3

Продовжуючи тему Swift на сервері, ось посилання на наступний митап від команди, яка займається його розвитком. У програмі:

👉 Swift і WebAssembly
👉 Підготовка проектів до Swift 6

📆 Митап відбудеться сьогодні

🇺🇦 iOSDevUA
1👍1🔥1
Відбувся реліз Swift 6! 🎉🎉🎉

🦺 Concurrency: memory safety і data-race safety
🪟 Підтримка вбудованих та крос-платформених рішень
🧪 Swift Testing: параметризоване тестування на основі макросів

👉 https://www.swift.org/blog/announcing-swift-6/

🇺🇦 iOSDevUA
👍42🔥2
💡Camera Control в iPhone16: AVCaptureControl та фреймворк LockedCameraCapture

Буквально тиждень тому показали новий телефон, а у нас вже з’явився новий інструмент, новий контрол, з яким можна працювати.

📖 На офіційній сторінці Apple можна ознайомитися з найкращими практиками в плані дизайну.

А з того, що нам може знадобитися:

1️⃣ AVCaptureControl — новий контрол тільки для 16/16 Pro (приклади роботи — тут).

2️⃣ LockedCameraCapture — новий фреймворк, за допомогою якого можна створити розширення для запуску камери на заблокованому пристрої. Туторіал вже доступний (але, як і завжди, є ряд обмежень).

🇺🇦 iOSDevUA
💡libcimbar – протокол передачі даних за допомогою QR-кодів

Не знаю, навіщо вам цей проєкт, але виглядає як крута ідея для основи якогось пет-проєкту! На базі анімованого QR-коду реалізована передача даних зі швидкістю близько 100 кбіт/сек.

🇺🇦 iOSDevUA
💡Swift Testing: Розбір API та макроса #expect

Новий зрозумілий та виразний API робить написання тестів більш простим, а сам інтерфейс Xcode зробив великий крок вперед для сповіщень при помилках (або ж коректному виконанні).

📖 У цій статті приділено увагу написанню тестів з використанням нових можливостей, а також розглянуто міграцію з XCTests.

🇺🇦 iOSDevUA
💡Реліз Hummingbird 2

Останнім часом кількість новин навколо серверного Swift якось зашкалює. Цього разу мова про мажорний реліз ще одного порівняно популярного фреймворку. Ключова зміна, звісно ж, Swift Concurrency. Повні реліз-ноути можна прочитати тут.

🇺🇦 iOSDevUA
💡Оновлення App Store Connect

Тепер обов’язковим є лише один набір скріншотів для додатків (і для iPhone, і для iPad).

🤩 Викладати додатки буде простіше (і швидше).

🇺🇦 iOSDevUA
👍3
💡Оптимізація використання пам’яті для SwiftUI+CoreData

Незважаючи на наявність lazy containers у SwiftUI та загалом механізмів для оптимізації CoreData, зі збільшенням складності додатків можуть виникнути ситуації, коли можна зловити краші через надмірне використання пам’яті.

Важливо розуміти не тільки особливості роботи з в’юхами, але й властивості самої CoreData.

📖 У цьому проєкті розглянуто покроковий процес оптимізації роботи з пам’яттю для демонстраційного додатка (спочатку використовуючого 1,6 ГБ пам’яті для відображення всього лише 100 елементів даних), який у результаті зможе працювати з сотнями об’єктів і використовувати всього 200 МБ.

🛠 Код додатка доступний на GitHub.

🇺🇦 iOSDevUA
🔥5👍1
💡Стаття з дуже кричущою назвою.
Не знаю, наскільки це все реально, але думка про те, що майбутнє зовсім близько, трохи присутня.
Мабуть, стаття буде цікава не дуже широкій аудиторії, але виглядає надихаюче, хоч і трохи складно, тому не можна не поділитися 👍

👉 https://www.createwithswift.com/revolutionizing-surgery-and-medical-treatments-with-visionos/

🇺🇦 iOSDevUA
4
💡Підбірка питань по Swift та iOS для технічних співбесід 2024

Сьогодні ділюся тут великим матеріалом

1. У чому різниця між статичною змінною та змінною класу?
Чому їх природа схожа і до чого тут наслідування?

2. Чи обчислюються ліниві змінні більше одного разу?
І чому важлива потокобезпечність.

3. У чому різниця між self та Self?
Різниця в Swift полягає в їх використанні та контексті. Якщо ви писали іншими мовами, то напевно знаєте, для чого там використовували this або typeof.

4. Як зробити методи опціональними в протоколі?
Є два підходи — optional та extension.

5. Як відбувається оптимізація використання пам’яті в UITableView?
У каналі я регулярно ділюся проблемами та рішеннями для оптимізації. Наприклад, що робити, якщо у нас дуже багато комірок.

6. Що таке Dependency Injection і які його переваги?
Тут, як ви вже здогадалися, мова про Constructor injection/Property injection/Method injection. Ну і про опис переваг, звісно.

7. Поясніть різницю між throws та rethrows у Swift.
Як правильно використовувати do-catch і багато іншого.

8. Поясніть типи сесій та задач, які підтримує клас URLSession.
Default Session/Ephemeral Session/Background Session. У цій темі розглянуто, чи є у нас спосіб повторити невдалі запити.

9. Порівняйте статичні та динамічні бібліотеки.
Про те, що може включати кожен тип бібліотек, що відбувається при компіляції, як бути з оновленнями.

10. Як би ви реалізували список з нескінченним прокручуванням?
Великий розбір на прикладах.

11. Що таке copy-on-write у Swift? Поясніть, як налаштувати його реалізацію.
Звісно, ця техніка дозволяє значно скоротити використання пам’яті та підвищити продуктивність. Але що всередині?

12. Поясніть, як використовується патерн Factory і яку проблему вирішує цей патерн.

13. Що таке APNS і як він працює?

14. Поясніть призначення ключового слова «mutating» у Swift.

15. У чому різниця між @StateObject та @ObservedObject у SwiftUI?

16. Що таке Mocks та Stubs і в чому різниця між ними?
Призначення/Поведінка/Використання.

17. Поясніть протоколи Equatable, Hashable та Comparable у Swift.

18. Що означає UIApplicationMain?

19. Поясніть, чому Swift є типобезпечною мовою?
Все про Strong Type, Type Inference, Type Casting, optional, дженеріки.

20. Навіщо вам потрібні escaping closures і коли їх слід використовувати?

🇺🇦 iOSDevUA
💡Використовуємо Cursor для розробки iOS

Cursor — хайпова IDE, яка позиціонує себе як AI-centric. Якщо вам цікаво спробувати розробляти в ній під iOS, то в статті розповідається, як за допомогою бібліотеки Inject можна обійтися без необхідності працювати з симулятором через Xcode.

🇺🇦 iOSDevUA
👍1
💡Кастомізація тем у SwiftUI з використанням ShapeStyle

У SwiftUI налаштування зовнішнього вигляду додатка на базі кастомної теми безумовно покращить користувацький досвід.

Початковий підхід до управління цими налаштуваннями передбачає монотонне повторення одних і тих же дій для різних екранів.

📖 У цій статті розглянуто спосіб з використанням кастомного ShapeStyle для створення власних тем у всьому додатку.

🇺🇦 iOSDevUA
👍1
💡Стаття, яку запропонував наш підписник. Вона допомогла йому в роботі. Впевнений, що допоможе ще комусь.
Якщо ви використовуєте CoreData у своєму проєкті і працюєте (а можливо, після прочитання статті почнете) з Diffable Data Sources, то цей матеріал точно буде вам корисним.
Diffable Data Sources — це заміна табличних дата сорсов, щоб відображати контент у форматі таблиці або колекції та брати дані з CoreData, власне. В загальному у статті все детально описано 👍

👉 https://www.avanderlee.com/swift/diffable-data-sources-core-data/

🇺🇦 iOSDevUA
💡SwiftPM Snippets

Сніппети з’явилися ще у Swift 5.7, але вони використовуються рідко, а офіційної документації мало, тому стаття – на вагу золота. Автор розбирає, як додавати сніппети до пакетів, вбудовувати їх у документацію DocC та використовувати купу їх маловідомих особливостей.

🇺🇦 iOSDevUA
👍2