💡Корисні поради для Advent of Code на Swift
Щоразу в грудні Ерік Вастл публікує Advent of Code — захоплюючий набір завдань для написання алгоритмів.
Щодня, з 1 по 25 грудня, з’являється нове завдання.
Завдання публікуються поступово, починаючи з найпростіших і поступово ускладнюються.
🔗 Ось простий інструктаж, як приєднатися до Swift-лідерборду.
А на скріншоті кілька порад, як спростити розв’язок завдань за допомогою Swift Algorithms.
🇺🇦 iOSDevUA
Щоразу в грудні Ерік Вастл публікує Advent of Code — захоплюючий набір завдань для написання алгоритмів.
Щодня, з 1 по 25 грудня, з’являється нове завдання.
Завдання публікуються поступово, починаючи з найпростіших і поступово ускладнюються.
🔗 Ось простий інструктаж, як приєднатися до Swift-лідерборду.
А на скріншоті кілька порад, як спростити розв’язок завдань за допомогою Swift Algorithms.
🇺🇦 iOSDevUA
👍2
💡Apple хоче спростити безпеку від data-race
Здається, команда Swift почула скарги від спільноти на те, що нові механізми безпеки від data race в Swift 6 вийшли занадто складними. Нещодавно вони опублікували бачення того, як можна покращити ситуацію.
🇺🇦 iOSDevUA
Здається, команда Swift почула скарги від спільноти на те, що нові механізми безпеки від data race в Swift 6 вийшли занадто складними. Нещодавно вони опублікували бачення того, як можна покращити ситуацію.
🇺🇦 iOSDevUA
GitHub
swift-evolution/visions/approachable-concurrency.md at approachable-concurrency-vision · hborla/swift-evolution
This maintains proposals for changes and user-visible enhancements to the Swift Programming Language. - hborla/swift-evolution
💡Розтягування аудіофайлу до потрібної довжини в Swift
Ця функція може бути корисною для вирішення проблем з синхронізацією (наприклад, при перекладі оригінального файлу та генерації субтитрів).
📖 Том Локхорст і Матейс Кадейк пояснюють, чому комбінації AVMutableComposition та AVAudioUnitTimePitch недостатньо для досягнення потрібного результату. Вони описують метод, що передбачає дублювання конкретних фрагментів аудіо в обчислених точках.
🛠 Код прикладу доступний на GitHub.
🇺🇦 iOSDevUA
Ця функція може бути корисною для вирішення проблем з синхронізацією (наприклад, при перекладі оригінального файлу та генерації субтитрів).
📖 Том Локхорст і Матейс Кадейк пояснюють, чому комбінації AVMutableComposition та AVAudioUnitTimePitch недостатньо для досягнення потрібного результату. Вони описують метод, що передбачає дублювання конкретних фрагментів аудіо в обчислених точках.
🛠 Код прикладу доступний на GitHub.
🇺🇦 iOSDevUA
Nonstrict
Stretching audio by small amounts using Swift | Nonstrict
Stretching an audio file to a certain length can be useful to fix lipsync issues. Our previous approach didn't work for stretching small durations over a large amount of time. We now have a new solution.
💡Дайджест Swift Evolution: травень-листопад
Оскільки ми заговорили про оновлення в Swift, ось дайджест з коротким розбором всіх останніх важливих прийнятих пропозицій:
👉SE-0436: Objective-C implementations in Swift
👉SE-0438: Metatype Keypaths
👉SE-0439: Allow trailing comma in comma-separated lists
👉SE-0443: Precise Control Flags over Compiler Warnings
👉SE-0444: Member import visibility
👉SE-0445: Improving String.Index's printed descriptions
🇺🇦 iOSDevUA
Оскільки ми заговорили про оновлення в Swift, ось дайджест з коротким розбором всіх останніх важливих прийнятих пропозицій:
👉SE-0436: Objective-C implementations in Swift
👉SE-0438: Metatype Keypaths
👉SE-0439: Allow trailing comma in comma-separated lists
👉SE-0443: Precise Control Flags over Compiler Warnings
👉SE-0444: Member import visibility
👉SE-0445: Improving String.Index's printed descriptions
🇺🇦 iOSDevUA
Substack
Swift Evolution Monthly: May-November 2024
Discover the latest Swift updates, from Objective-C compatibility improvements to metatype keypaths, trailing commas, and new compiler controls—plus a must-have app for tracking proposals!
💡Створення клону додатку Messages за допомогою SwiftUI
📖 У статті автор ділиться своїм підходом до верстки списку чатів, вибору вкладень та розглядає особливості реалізації «баблів» повідомлень за допомогою Path.
🇺🇦 iOSDevUA
📖 У статті автор ділиться своїм підходом до верстки списку чатів, вибору вкладень та розглядає особливості реалізації «баблів» повідомлень за допомогою Path.
🇺🇦 iOSDevUA
This media is not supported in your browser
VIEW IN TELEGRAM
💡Візуальні експерименти зі SwiftUI
Невелика колекція експериментів з UI/UX на SwiftUI, серед яких можна знайти досить нестандартні рішення.
🇺🇦 iOSDevUA
Невелика колекція експериментів з UI/UX на SwiftUI, серед яких можна знайти досить нестандартні рішення.
🇺🇦 iOSDevUA
👍1
💡SwiftUI анімації в UIKit
З iOS 18 з’явилася можливість використовувати SwiftUI Animation API для анімації UIKit вьюшок. Для цього достатньо створити об’єкт анімації і передати його в метод
🇺🇦 iOSDevUA
З iOS 18 з’явилася можливість використовувати SwiftUI Animation API для анімації UIKit вьюшок. Для цього достатньо створити об’єкт анімації і передати його в метод
UIView.animate().🇺🇦 iOSDevUA
Nil Coalescing
Animate UIKit views with SwiftUI animations in iOS 18
With iOS 18, we can now use SwiftUI animations to animate UIKit views, making it easier to bring SwiftUI’s expressive and flexible animations into UIKit projects.
👍2
💡В який день тижня сабмітити додаток, щоб швидше пройти рев’ю
Команда Runway, через продукт якої релізиться велика кількість додатків, проаналізувала кореляцію між днями тижня, коли додатки відправляються на рев’ю, і часом, який займає їх перевірка. Ось основні тренди:
👉 Найшвидше рев’ю проходить у четвер, в середньому 4-5 годин.
👉 На другому місці за швидкістю — середа та субота, 5-6 годин.
👉 Найдовше рев’ю триває по п’ятницях і неділях, 12-16 годин.
До того ж у них є зручний сервіс з аналізом поточної швидкості роботи команди рев’ю.
🇺🇦 iOSDevUA
Команда Runway, через продукт якої релізиться велика кількість додатків, проаналізувала кореляцію між днями тижня, коли додатки відправляються на рев’ю, і часом, який займає їх перевірка. Ось основні тренди:
👉 Найшвидше рев’ю проходить у четвер, в середньому 4-5 годин.
👉 На другому місці за швидкістю — середа та субота, 5-6 годин.
👉 Найдовше рев’ю триває по п’ятницях і неділях, 12-16 годин.
До того ж у них є зручний сервіс з аналізом поточної швидкості роботи команди рев’ю.
🇺🇦 iOSDevUA
LinkedIn
Which day of the week should you submit your app to Apple to get reviewed most quickly?
A team asked me this the other day, so…
A team asked me this the other day, so…
Which day of the week should you submit your app to Apple to get reviewed most quickly?
A team asked me this the other day, so I've been digging into Runway's review time data to see if there's a clear answer.
Turns out there are some noticeable trends:…
A team asked me this the other day, so I've been digging into Runway's review time data to see if there's a clear answer.
Turns out there are some noticeable trends:…
💡Підсвітка коду в SwiftUI
Розбір того, як реалізувати підсвітку Swift коду у віджеті Text в SwiftUI за допомогою пакета swift-syntax.
🇺🇦 iOSDevUA
Розбір того, як реалізувати підсвітку Swift коду у віджеті Text в SwiftUI за допомогою пакета swift-syntax.
🇺🇦 iOSDevUA
❤2
💡ChatGPT та Xcode
Не проходить і тижня, щоб хтось не спробував інтегрувати нормальний AI інструмент в Xcode. Цього разу — рішення загального характеру. Десктопний додаток ChatGPT тепер може інтегруватися з популярними редакторами коду, щоб отримати більш точний контекст того, що відбувається на екрані.
🇺🇦 iOSDevUA
Не проходить і тижня, щоб хтось не спробував інтегрувати нормальний AI інструмент в Xcode. Цього разу — рішення загального характеру. Десктопний додаток ChatGPT тепер може інтегруватися з популярними редакторами коду, щоб отримати більш точний контекст того, що відбувається на екрані.
🇺🇦 iOSDevUA
Medium
ChatGPT for macOS can now work with Xcode
And it’s great to start a quick chat about your current code!
❤3
💡Як Apple використовує Swift і SwiftUI в iOS 18
📖 Олександро Колуччі в щорічному дослідженні відповів на кілька запитань, як і для попередніх версій iOS:
1️⃣ Скільки бінарників містить iOS 18?
2️⃣ Які мови програмування використовувалися для розробки системних додатків?
3️⃣ Скільки додатків написано на чистому Swift?
4️⃣ Який відсоток додатків використовує SwiftUI порівняно з UIKit?
Очевидний спойлер: кількість додатків на Swift і SwiftUI зростає.
Але в iOS 18 Apple також починає або принаймні планує використовувати Swift у низькорівневій підсистемі Secure Enclave.
🇺🇦 iOSDevUA
📖 Олександро Колуччі в щорічному дослідженні відповів на кілька запитань, як і для попередніх версій iOS:
1️⃣ Скільки бінарників містить iOS 18?
2️⃣ Які мови програмування використовувалися для розробки системних додатків?
3️⃣ Скільки додатків написано на чистому Swift?
4️⃣ Який відсоток додатків використовує SwiftUI порівняно з UIKit?
Очевидний спойлер: кількість додатків на Swift і SwiftUI зростає.
Але в iOS 18 Apple також починає або принаймні планує використовувати Swift у низькорівневій підсистемі Secure Enclave.
🇺🇦 iOSDevUA
❤1
💡Запускаємо Swift на Android
Skip Tools, раніше транспілюючи Swift у Kotlin, пішли ще далі і тепер навчилися компілювати Swift таким чином, щоб бінарний файл можна було запускати на Android. Це дозволяє інтегруватися з Kotlin та взаємодіяти з Xcode.
🇺🇦 iOSDevUA
Skip Tools, раніше транспілюючи Swift у Kotlin, пішли ще далі і тепер навчилися компілювати Swift таким чином, щоб бінарний файл можна було запускати на Android. Це дозволяє інтегруватися з Kotlin та взаємодіяти з Xcode.
🇺🇦 iOSDevUA
👍4❤2🤯1
💡Покращуємо використання ScrollView: створення колекцій з вертикальним та горизонтальним скролом
📖 У цьому матеріалі розглядаються особливості використання ScrollView при впровадженні пагінації, властивості containerRelativeFrame, робота з позицією прокрутки та анімаціями.
🇺🇦 iOSDevUA
📖 У цьому матеріалі розглядаються особливості використання ScrollView при впровадженні пагінації, властивості containerRelativeFrame, робота з позицією прокрутки та анімаціями.
🇺🇦 iOSDevUA
❤2👍2
💡Через два роки неможливо буде випускати нові версії подів
Кілька місяців тому я ділився новиною про те, що CocoaPods завершив активну розробку і планує перейти в режим підтримки. Тепер з’явилися подробиці щодо цього: через два роки CocoaPods trunk перейде в режим тільки для читання, що означає, що публікація нових версій подів стане неможливою.
🇺🇦 iOSDevUA
Кілька місяців тому я ділився новиною про те, що CocoaPods завершив активну розробку і планує перейти в режим підтримки. Тепер з’явилися подробиці щодо цього: через два роки CocoaPods trunk перейде в режим тільки для читання, що означає, що публікація нових версій подів стане неможливою.
🇺🇦 iOSDevUA
blog.cocoapods.org
The Dependency Manager for iOS & Mac projects.
❤1💔1
This media is not supported in your browser
VIEW IN TELEGRAM
💡Розбір Apple Intelligence: генерація зображень
🔗 Image Playground, працюючий на базі Apple Intelligence, — це новий інструмент, який дозволяє легко перетворювати текстові та візуальні запити на зображення.
Він доступний у macOS 15.2 beta, iOS 18.2 beta та iPadOS 18.2 beta і відкриває нові можливості для творчості не лише для користувачів, але й для нас, розробників.
📖 Ознайомитися з можливостями роботи з Image Playground можна тут.
🇺🇦 iOSDevUA
🔗 Image Playground, працюючий на базі Apple Intelligence, — це новий інструмент, який дозволяє легко перетворювати текстові та візуальні запити на зображення.
Він доступний у macOS 15.2 beta, iOS 18.2 beta та iPadOS 18.2 beta і відкриває нові можливості для творчості не лише для користувачів, але й для нас, розробників.
📖 Ознайомитися з можливостями роботи з Image Playground можна тут.
🇺🇦 iOSDevUA
👍2
💡Sharing – нова бібліотека від Pointfree
Pointfree випустили бібліотеку Sharing, яка спрощує обмін станом як між модулями додатка, так і з зовнішнім середовищем, таким як файлові системи чи UserDefaults.
🔗 Посилання на GitHub
🇺🇦 iOSDevUA
Pointfree випустили бібліотеку Sharing, яка спрощує обмін станом як між модулями додатка, так і з зовнішнім середовищем, таким як файлові системи чи UserDefaults.
🔗 Посилання на GitHub
🇺🇦 iOSDevUA
www.pointfree.co
Simple state sharing and persistence in Swift
We are excited to announce a brand new open-source library: Sharing. Instantly share state among your app’s features and external persistence layers, including user defaults, the file system, and more.
❤1👍1
💡Створення екрану налаштувань у SwiftUI за допомогою AppStorage
Простий екран з опціональними функціями необхідний практично в кожному пет-проєкті або тестовому завданні.
📖 У цій статті, яка особливо корисна для новачків, розглядається створення такого екрану. Автор також нагадує, для чого слід використовувати suiteName.
🇺🇦 iOSDevUA
Простий екран з опціональними функціями необхідний практично в кожному пет-проєкті або тестовому завданні.
📖 У цій статті, яка особливо корисна для новачків, розглядається створення такого екрану. Автор також нагадує, для чого слід використовувати suiteName.
🇺🇦 iOSDevUA
👍2❤1
💡Як покращилися Text Fields у SwiftUI
Якщо ви не дуже уважно стежили за розвитком текстових полів у SwiftUI останніми роками, у статті розглядаються основні покращення:
👉 Автоматичний ресайзинг вздовж вибраної осі
👉 Доступ до вмісту виділеного тексту
👉 Suggestions API
🇺🇦 iOSDevUA
Якщо ви не дуже уважно стежили за розвитком текстових полів у SwiftUI останніми роками, у статті розглядаються основні покращення:
👉 Автоматичний ресайзинг вздовж вибраної осі
👉 Доступ до вмісту виділеного тексту
👉 Suggestions API
🇺🇦 iOSDevUA
Swift with Majid
Text field enhancements in SwiftUI
From the very first release of the SwiftUI framework, text fields were a weak point of the framework. Over the years, Apple introduced a few enhancements to text fields to improve the developer experience. This week, we will talk about the improvements that…
❤1
🎬Добірка доповідей з конференції Swift Connection 2024
Нещодавно відбулося чергове подія для iOS-розробників, і я хочу поділитися плейлистом та ключовими доповідями, які, на мою думку, варто послухати.
📺 Практичне керівництво з продуктивності Swift
У цьому доповіді розглядається, як правильно фокусуватися на найбільш важливих аспектах для написання швидкого коду Swift, з практичними порадами та прикладами.
📺 Дані? Дані! Вони всюди!
Доповідь охоплює різні варіанти зберігання даних (Plist/SQLite/CoreData/Swift Data) і їх продуктивність при роботі з 1 ГБ даних.
📺 Дзен і мистецтво відлагодження
Доповідач закликає відмовитись від використання пошукових систем для вирішення проблем і зосередитися на справжньому розумінні джерела проблем.
📺 Swift 6 + Concurrency
Автор ділиться порадами для ефективного та елегантного вирішення асинхронних задач у Swift 6.
📺 SwiftUI-анімації
Це відео розглядає різні способи створення анімацій у SwiftUI.
📺 Повний плейлист конференції доступний тут.
🇺🇦 iOSDevUA
Нещодавно відбулося чергове подія для iOS-розробників, і я хочу поділитися плейлистом та ключовими доповідями, які, на мою думку, варто послухати.
📺 Практичне керівництво з продуктивності Swift
У цьому доповіді розглядається, як правильно фокусуватися на найбільш важливих аспектах для написання швидкого коду Swift, з практичними порадами та прикладами.
📺 Дані? Дані! Вони всюди!
Доповідь охоплює різні варіанти зберігання даних (Plist/SQLite/CoreData/Swift Data) і їх продуктивність при роботі з 1 ГБ даних.
📺 Дзен і мистецтво відлагодження
Доповідач закликає відмовитись від використання пошукових систем для вирішення проблем і зосередитися на справжньому розумінні джерела проблем.
📺 Swift 6 + Concurrency
Автор ділиться порадами для ефективного та елегантного вирішення асинхронних задач у Swift 6.
📺 SwiftUI-анімації
Це відео розглядає різні способи створення анімацій у SwiftUI.
📺 Повний плейлист конференції доступний тут.
🇺🇦 iOSDevUA
❤5
💡Дослідження розробки для macOS
👉 Лише 20% розробників поширюють свої додатки виключно через App Store.
👉 Найпопулярніший фреймворк — AppKit, який використовується у 45% всіх додатків. Кросплатформених додатків на React Native та Flutter також досить багато.
👉 visionOS не здобув великої популярності — лише 3% респондентів створюють абсолютно нові додатки для цієї платформи, 17% адаптують існуючі додатки або планують це зробити, а 35% взагалі не планують працювати з visionOS.
🇺🇦 iOSDevUA
👉 Лише 20% розробників поширюють свої додатки виключно через App Store.
👉 Найпопулярніший фреймворк — AppKit, який використовується у 45% всіх додатків. Кросплатформених додатків на React Native та Flutter також досить багато.
👉 visionOS не здобув великої популярності — лише 3% респондентів створюють абсолютно нові додатки для цієї платформи, 17% адаптують існуючі додатки або планують це зробити, а 35% взагалі не планують працювати з visionOS.
🇺🇦 iOSDevUA
❤4
💡Метью Массікотт про строгий паралелізм у Swift 6
Впровадження Swift 6 може бути складним і спричиняти чимало проблем. Не полегшує ситуацію і велика кількість ключових слів: tasks, sendability, isolation domains та boundaries, actors, preconcurrency (і багато іншого).
📺 У цьому випуску Dev Conversations Метью розповідає не тільки про це, але й про свій досвід роботи з платформами Apple ще до появи OS X, а також про роботу з батареєю iPhone в кінці 2000-х і перші дні роботи в Crashlytics.
📖 Текстовий варіант бесіди доступний тут.
Метью також відомий завдяки своєму блогу, де можна знайти практичні рішення та поради, що іноді з’являються й у нашому каналі. Його репозиторій містить:
🔗 Практичні рішення проблем з використанням Swift Concurrency на GitHub.
🇺🇦 iOSDevUA
Впровадження Swift 6 може бути складним і спричиняти чимало проблем. Не полегшує ситуацію і велика кількість ключових слів: tasks, sendability, isolation domains та boundaries, actors, preconcurrency (і багато іншого).
📺 У цьому випуску Dev Conversations Метью розповідає не тільки про це, але й про свій досвід роботи з платформами Apple ще до появи OS X, а також про роботу з батареєю iPhone в кінці 2000-х і перші дні роботи в Crashlytics.
📖 Текстовий варіант бесіди доступний тут.
Метью також відомий завдяки своєму блогу, де можна знайти практичні рішення та поради, що іноді з’являються й у нашому каналі. Його репозиторій містить:
🔗 Практичні рішення проблем з використанням Swift Concurrency на GitHub.
🇺🇦 iOSDevUA
YouTube
Dev Conversations #4: Matt Massicotte - Swift 6 strict concurrency
The adoption of strict concurrency in Swift is not an easy process in some projects. Implicit assumptions we usually make are often challenged by the compiler, and we don't know how to solve them in many cases - leading to frustration among us, developers.…