iOS Broadcast
3.33K subscribers
1.71K photos
85 videos
982 links
Подборка новостей и статей для iOS разработчиков.

Новости Kotlin и мультиплатформы @kotlin_broadcast
Новости Android @android_broadcast
Реклама и прочее @ab_manager
Download Telegram
Async await in Swift через примеры

Очень достойная статья по async-await в Swift. Один из самых эффективных способов погрузиться в новую тему-через примеры, очередь пришла и для async-await.

🔴Асинхронные методы заменяют кложуры, делая код более читаемым и эффективным
🔴Использование ключевого слова await обеспечивает линейный порядок выполнения, упрощая асинхронный код
🔴Переход к асинхронному ожиданию в существующих проектах может осуществляться постепенно с помощью различных вариантов рефакторинга
🔴Переход на Swift 6 улучшает структурированный параллелизм и устраняет возможность появления "состояния гонки"
🔴Изучение дополнительных возможностей параллелизма в Swift может еще больше повысить эффективность и безопасность кода
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Уже перешли на async/await в своих проектах?
Anonymous Poll
37%
Да
17%
Начали миграцию
46%
Нет
Что используется у вас в проекте?
Anonymous Poll
68%
GCD (DispatchQueue/DispatchGroup)
50%
async/await
38%
Combine
12%
Operations
🔥2
Media is too big
VIEW IN TELEGRAM
Реализация Hero анимации, используя SwiftUI NavigationTransition
Вы точно видели анимации в App Store - на WWDC24 добавили NavigationTransition в SwiftUI. Для реализации такой анимации в несколько строк. Но если остановиться на базовой конфигурации, переход получится не совсем как у Apple.
Автор в рамках статьи, на примерах допиливает эту анимацию. Все достаточно просто, но лаконично
👌2
📱 Scroll geometry and position view modifiers in SwiftUI on iOS 18

На WWDC24 расширили применимость SwiftUI и для работы со скролом. Нам добавили метод onScrollGeometryChange который предоставляет всю информацию о изменении геометрии скролла:
🟢bounds
🟢containerSize
🟢contentInsets
🟢contentOffset
🟢contentSize
🟢visibleRect
В скором времени, можно будет отказаться от костылей с использованием GeometryReader при работе с обычным скролом 💃
Please open Telegram to view this post
VIEW IN TELEGRAM
3🔥2🤔1🎉1
🔨 XcodeKit - Расширения для Xcode

С момента появления расширений для Xcode, сообщество уже создало целое множество расширений. Сегодня хочу поделиться с вами теми, которые я использую или планирую.
🟢Swimat - плагин форматирования кода, ставится через brew
🟢SwiftAI - генерирует класс модели из JSON
🟢Localizer - превращает обычную строку в локализованую
🟢Rubicon - генерирует реализации протоколов для тестов
🟢XSpellCheck - проверка орфографии, поддерживающее CamelCase
🟢EricsMark - выделяет блоки кода //MARK:
🟢PlayAlways - создает новый Playground одним нажатием

Какими расширениями пользуетесь вы?
Please open Telegram to view this post
VIEW IN TELEGRAM
5
🐥 Проверка зависимостей на поддержку Swift 6
Swift 6 приносит нам новый режим работы с многопоточностью, помогающий разработчикам на этапе компиляции видеть потенциальные проблемы и условия для гонки. Преимущества данного подхода раскроются только при использовании зависимостей, поддерживающих проверки безопасной многопоточности.
Чтобы понять, какие из зависимостей уже поддерживают Swift 6 многопоточность, в индексе пакетов будет отображаться уровень поддержки
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Forwarded from Android Broadcast
Получение D-U-N-S номера для мобильных разработчиков (4м) - статья с инструкцией по получению.

DUNS - это уникальный девятизначный идентификатор, присваиваемый одним из крупнейших кредитных бюро для бизнеса

#googleplay #appstore
👍2
Вышло в релиз приложение iOS IQ

IQ - отличный пример пет-проекта iOS-разработчика. Если вам нравятся квизы по iOS разработке, хотите проверить свои знания по многопоточности, работе с памятью, архитектуре и множеству другого, советую это приложение!
🟣Индивидуальная статистика
🟣Личный ранг
🟣Рейтинг среди игроков
🟣История ответов и полезные ссылки
🟣Приложение бесплатное и без встроенных покупок
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍84🤔4🎉1👌1
🔨 Xcode Explicitly Built Modules

Ранее, в обзоре нововведений Xcode 16, я уже рассказывал про экспериментальный режим компиляции Swift модулей, в статье приводятся реальные примеры использования и бенчмарки скорости компиляции и отладки. Первоначальные тесты показали, ускорение наблюдается не всегда, но экспериментальность такого метода подсказывает нам о возможных улучшениях в процессе получения фидбека от нас
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
1️⃣2️⃣3️⃣4️⃣5️⃣ SE-0431: isolated(any) Function Types

Swift 6 про работу с параллелизмом, в пропоузале добавляется новая возможность к функциональным значениям.

Суть проблемы:
Каждая декларация в Swift имеет некоторую четко определенную статическую изоляцию. Кложуры, однако, являются особенными. На их изоляцию влияет не только то, где они определены, но и то, что они захватывают. В данном предложении добавлена возможность проверить изолированность значения функции.
Кложур, помеченный @isolated(any), может "экспоузить" захваченную изоляцию во время выполнения.

func traverse(operation: @isolated(any) (Node) -> ()) {
let isolation = operation.isolation
}

Добавление @isolated(any) к замыканию означает, что оно должно вызываться с await. Это верно, даже если оно не выходит из изоляции. Начиная со Swift 6, вывод кода типа:

Task { print("1") }
Task { print("2") }
Task { print("3") }

Будет "1", "2", "3"
5
This media is not supported in your browser
VIEW IN TELEGRAM
📱 SwiftUI может быть немного... нетерпеливым

В отличии от императивных подходов к навигации, при работе со SwiftUI создание View может происходить не так как мы думаем, исходя из опыта использования UIKit. Это приводит к инициализации экранов до того, как они действительно понадобятся. Статья показывает на примере:
🟢Зачем появился NavigationLink(value:) в iOS 16
🟢Какие подводные камни таит использование NavigationLink(_:destination)
🟢Как избежать проблем, используя .onAppear и .task с NavigationLink(_:destination)

Надеюсь, вы до этого уже дошли сами, это прям обязательный тер. минимум для всех кто использует SwiftUI
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔1