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

Новости Kotlin и мультиплатформы @kotlin_broadcast
Новости Android @android_broadcast
Реклама и прочее @ab_manager
Download Telegram
#concurrency

Знакомимся с async/await в Swift (7 мин)

🗣 Новые асинхронные механизмы в Swift

📍 Преимущества перед GCD
📍 Новая асинхронная единица Task
📍 Асинхронные коллекции
📍 Нюансы работы с потоками
🔥5
#concurrency

Memory management when using async/await in Swift (12 мин)

🗣 Управление памятью - ключевой аспект при создании стабильных и оптимизированных приложений. Узнайте, как не допустить ошибок при работе с новым механизмом многопоточности

📍 Неявный захват переменных (Implicit Captures)
📍 Отмена выполнения Task
📍 Использование await для Published свойств
👍4
#concurrency

Акторы Swift под капотом (10 мин)

🗣 Перевод статьи об Actor в Swift, где довольно подробно рассказывается о том, как они работают под капотом

📍 Решение проблем параллелизма с помощью акторов (Race Condition и т.д.)
📍 Использование новой концепции Cooperative Threading Model вместо DispatchQueue
📍 Для чего нужны Executors в Actor
👍3👎3
What is a RunLoop Anyway? Swift and iOS Guide (6 мин)

RunLoop сохраняет ваш поток занятым, когда есть работа, и переводит ваш поток в спящий режим, когда ее нет
👉 Каждый поток может иметь уникальный RunLoop
👉 RunLoop для главного потока создается автоматически
👉 RunLoop создается при первом получении потока и уничтожается в конце потока.

#swift #concurrency
👍7👎3
Swift Parallel Programming With PromiseKit (2 мин)

С помощью PromiseKit можно связать несколько вызовов в цепочку, что позволит написать более читаемый и компактный код, чем с помощью closures. Если по тем или иным причинам Combine вам не подходит, можно посмотреть в сторону PromiseKit

#concurrency
👍3👎3
Swift async/await. Чем он лучше GCD? (12 мин)

Swift async/await - это новая фича языка, добавленная в swift 5.5. Она позволяет работать с асинхронными функциями в синхронном стиле. Разберем проблемы при работе с многопоточностью до async/await:
👉 Pyramid of doom - вложенность замыканий. Возникает сложность визуального восприятия
👉 Неудобная обработка ошибок
👉 Ошибки с замыканиями не выявляются компилятором
👉 Thread explosion. Если помещать в очереди много потокоблокирующих задач (которые используют локи, sync или sleep), то GCD не хватит потоков из его пулла, и он начнет создавать новые
👉 Priority inversion - в некоторых случаях задача с более высоким приоритетом может ожидать задачу с более низким приоритетом

#concurrency
👍91👎1
Closures Vs. Combine Vs. Async Await (6 мин)

В статье наглядно сравниваются три инструмента.
👉 Closures — плявились в Swift 2.0, WWDC 2015
👉 Combine — iOS 13 и macOS Catalina in 2019
👉 Async/Await — Swift 5.5 WWDC 2021
Closures и Combine используются для асинхронных операций и работают на разных уровнях абстракции. Closures используются для определения блоков кода с захватываемыми значениям, тогда как Combine - рактивный фреймворк для работы с потоками данных.
Async/Await - фича языка, упрощающая процесс написания асинхронного кода, как если бы он был синхронным

#concurrency
👍8👎1
Swift Concurrency Instrument: чем он полезен iOS-разработчику (5 мин)

В Xcode 14 появился специальный шаблон профилирования в Xcode Instruments — Swift Concurrency. Он помогает выявлять проблемы в асинхронном коде. Если вы используете Swift Concurrency, этот инструмент поможет лучше понимать, что происходит. Особенно эффективен он будет, если в приложении есть сложная логика с большим количеством асинхронных задач.

#concurrency
👍2👎1
Short Introduction to Multithreading and Thread-Safe Operations in Swift (9 мин)

Статья поможет освежить знания в многопоточности на Swift. Рекомендовано, если подзабыли, или перед собеседованием 😉

#concurrency
👍1👎1
Потокобезопасность swift через - lock

Многие считают что Swift Concurrency это наше все и чтобы достичь потокобезопасности нужно использовать акторы. Это правильный ход мышления, но не всегда применимый. Для кейсов где Structured concurrency не подходит Apple добавили в iOS 16 OSAllocatedUnfairLock.
В приведенной статье автор приводить пример использования OSAllocatedUnfairLock и NSRecursiveLock в разрезе классической задачи хранилища в UDF

#swift #concurrency
👍7👎1
🐥 Глоссарий по параллелизму Swift

Наткнулся на годный глоссарий по Swift Concurrency. Cодержит термины, ключевые слова и аннотации, связанные с параллелизмом. Содержит тип (ключевое слово, протокол, flow control), описание, ссылку на пропоузал и пример использования. Когда это может быть полезно? Пройтись и проверить что вы знакомы со всем что нужно, объяснить коллеге понятными словами, разобраться в MR, подготовиться к собесу.
Точно достойно 🔖
#swift #concurrency #glossary
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
🐥 Использование групп задач в Swift Concurrency
Группы задач существовали всегда, в GCD, OperationQueue и Combine. Они есть и в Swift Concurrency. Группы задач позволяют динамически запускать несколько дочерних задач и ожидать их выполнения или отмены. Группы задач используют совместную отмену и требуют проверки свойства Task.isCancelled (привет OperaionQueue). В статье на примерах рассматривается использование групп задач и оптимизация при работе с ними:
🟢Задачи добавляются с помощью функции addTask и могут иметь определенный приоритет.
🟢Группы задач выполняются в совместном пуле потоков, что позволяет оптимизировать логику приложения.
🟢Добавление задач только после завершения предыдущих задач помогает сократить потребление памяти.
🟢Функция addTaskUnlessCancelled добавляет задачу только при отсутствии отмены группы задач.

#swift #concurrency #group
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥1