Swift concurrency. Executors, Actors и их связь с потокам
Полезная статья из серии Swift Concurrency, где автор разбирается в недрах:
🟢 Как определяется поток, на котором будет выполняться Task?
🟢 Почему в рамках одной Task поток может меняться?
🟢 Что такое Executor и на какие типы он делится?
🟢 За что отвечает TaskExecutor, а за что SerialExecutor?
🟢 Как определить текущий Executor по коду?
🟢 Как использовать свой самописный Executor?
🟣 Компоненты Swift Concurrency
🟢 Task и child task — базовые единицы для асинхронных функций.
🟢 Job — часть таски между точками прерываний.
🟢 Executor — распределяет Job по потокам.
🟢 Cooperative thread pool — пул потоков, равный количеству ядер устройства.
Типы Executor'ов
🟢 Global concurrent executor — дефолтный планировщик, распределяет Job'ы конкуррентно.
🟢 Serial executors — каждый actor имеет свой, выполняет джобы последовательно.
🟢 Main Actor executor — выполняет джобы на main thread.
🟡 Понимание механизма работы swift concurrency помогает контролировать и прогнозировать использование инструментов.
Полезная статья из серии Swift Concurrency, где автор разбирается в недрах:
Типы Executor'ов
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍2
Автор рассматривает все основные подходы к навигации (часть статьи еще дополняется). SwiftUI сначала был представлен с
NavigationView
, потом его замененили на NavigationStack
стек в iOS 16. Все это время часть разработчиков строила навигаюцию вообще на базе UIKit
. В статье рассматриваются подходы:Environment
NavigationStack
и PatientNavigationStack
Environment Values
Добавляйте в
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Подписочные системы монетизации почти полностью заменили классическую покупку контента. Если для нас как пользователей это не лучшая новость, то как разработчикам требуется понимать как это использовать:
Полный отчет
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
Swift Testing предлагает новые возможности для юнит и функционального тестирования. Переход с XCTest на Swift Testing может быть сложным. Официальный гайд Apple не охватывает все практические аспекты.
Поиск и выполнение тестов:
XCTest
использует XCTestCase
с функциями среды выполнения Objective-C
.Swift Testing
использует макросы для генерации описания тестов.XCTest
выполняет тесты последовательно, Swift-тестирование — параллельно.Проблемы:
Task
Рекомендации по миграции:
Преимущества и недостатки миграции:
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Когда-то давно, на старте карьеры, я попал на проект с Objective-C++. Не просто ручной подсчет ссылок а полноценное управление аллокацией памяти. С менее понятным кодом с тех пор я не сталкивался. И вот, он вернулся, интероп с C++:
Не думаю что кто-то в здравом уме будем писать логику на C++, но вот использовать готовые опенсорсные C++ движки или повышать производительность в местах ботлнеков может быть полезно.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Решение для повторяющихся шаблонов - макросы.
Макрос
@ThemedButton
@ThemedButton("Коснись меня")
Расширенный макрос
@GreetingText
@GreetingText("Отжимающийся воин")
.Плюсы использования:
Минусы использования макросов
Заключительные мысли
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔2❤1
Mattt (NSHipster) редко но метко закидывает интересные концепции. В этот раз поднимается вопрос неопределенности в программировании. Идея состоит в том чтобы внедрить неопределенность в систему типов.
Uncertain<T>: новый подход
Метод Монте-Карло
Заключение
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8