Swift concurrency. Executors, Actors и их связь с потоками
Новая и как всегда подробная часть из этой серии, в которой рассказывается про недра Swift Concurrency.
🟢 Как определяется поток, на котором будет выполняться Task
🟢 Почему в рамках одной Task поток может меняться
🟢 Что такое Executor и на какие типы он делится
🟢 За что отвечает TaskExecutor, а за что SerialExecutor
🟢 Как определить текущий Executor по коду
🟢 Как использовать свой самописный Executor
Читать (Ru)
Новая и как всегда подробная часть из этой серии, в которой рассказывается про недра Swift Concurrency.
Читать (Ru)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤3🔥3
iOS 26: Notable UIKit Additions
Такс, разбираю отложенные материалы, вероятно до конца недели могу чутка поспамить, но это не точно 😉
Небольшая обзорная статья основных изменений в UIKit.
👉 Observable Objects
👉 Update properties
👉 Flushing animation updates
Читать (En)
Такс, разбираю отложенные материалы, вероятно до конца недели могу чутка поспамить, но это не точно 😉
Небольшая обзорная статья основных изменений в UIKit.
👉 Observable Objects
👉 Update properties
👉 Flushing animation updates
Читать (En)
🔥4❤2👏2👍1
What's new in SwiftUI for iOS 26
Подобрка материалов с обзором новых изменений в SwiftUI.
🟢 How to embed web content using WebView
🟢 How to use rich-text editing with TextView and AttributedString
🟢 How to add list section index labels
🟢 How to give label icons a fixed width
🟢 How to automatically add appropriate padding for the current scene
🟢 The @Animatable macro makes it easier to animate views, modifiers, and more
🟢 The openURL action has been extended to support an in-app browser
🟢 How to make a TabView minimize on scroll
🟢 How to add a TabView accessory
🟢 How to adjust the scroll edge effect for ScrollView and List
🟢 We can now specify custom section spacing inside a list
🟢 How to add space in a toolbar
🟢 We can now set a navigation subtitle
Читать (En)
Подобрка материалов с обзором новых изменений в SwiftUI.
Читать (En)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4❤3👍2
async let vs Task group
Ещё одна статья про Swift Concurrency, а именно про отличия async let и Task group с примерами.
Читать (Ru)
Ещё одна статья про Swift Concurrency, а именно про отличия async let и Task group с примерами.
Читать (Ru)
👍7🔥4❤3
Swift Actors: What Are They For?
Актор — это ссылочный тип, подобный классу, созданный для безопасного управления изменяемым состоянием в многопоточке. Акторы, представленные в Swift 5.5, помогают разработчикам писать потокобезопасный и более предсказуемый код при работе с асинхронными задачами.
В статье более детально можно почитать что это такое и чем отличаются от классов и посмотреть простые примеры использования.
Читать (En)
Актор — это ссылочный тип, подобный классу, созданный для безопасного управления изменяемым состоянием в многопоточке. Акторы, представленные в Swift 5.5, помогают разработчикам писать потокобезопасный и более предсказуемый код при работе с асинхронными задачами.
В статье более детально можно почитать что это такое и чем отличаются от классов и посмотреть простые примеры использования.
Читать (En)
🔥5👍4❤3
Threads vs. Tasks in Swift Concurrency
Подробная статья с разбором и сравнением Threads и Tasks в Swift Concurrency.
🟢 What is a thread?
🟢 Swift Concurrency and Threads
🟢 Tasks: A Higher-Level Abstraction
🟢 How Tasks are mapped to Threads
🟢 Can Thread explosion still happen in Swift Concurrency?
🟢 Does Swift Concurrency’s Limited Threads Reduce
🟢 Performance Compared to GCD?
🟢 Common misconceptions
Читать (En)
Подробная статья с разбором и сравнением Threads и Tasks в Swift Concurrency.
Читать (En)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥3❤2
Combine and Swift Concurrency: A threading risk
Небольшая статья про Combine и Swift Concurrency: миграция, совместное использование и возможные риски, после миграции.
🟢 Dispatching to a @MainActor isolation using a Combine pipeline
🟢 No compile-time feedback for sink closures
🟢 Solving Actor isolation issues in Combine
Читать (En)
Небольшая статья про Combine и Swift Concurrency: миграция, совместное использование и возможные риски, после миграции.
Читать (En)
Please open Telegram to view this post
VIEW IN TELEGRAM
4❤3🔥3👍2
Modern Swift Lock: Mutex & the Synchronization Framework
В статье разбирается один из механизмов синхронизации – Mutex. Как с ним работать, разница mutex и lock, обработка ошибок и т.д..
🟢 What is a Swift Lock?
🟢 Using Swift’s Mutex lock from the Synchronization framework
🟢 A lock that works great with Swift Concurrency
🟢 Shouldn’t I use an actor instead of locks in Swift Concurrency?
Читать (En)
В статье разбирается один из механизмов синхронизации – Mutex. Как с ним работать, разница mutex и lock, обработка ошибок и т.д..
Читать (En)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍2🔥2
Игра в SPM
В статье автор делится опытом перехода на Swift Package Manager, проблемами с которыми столкнулся и как их решал.
Читать (Ru)
В статье автор делится опытом перехода на Swift Package Manager, проблемами с которыми столкнулся и как их решал.
Читать (Ru)
👍4❤3🔥3
How to use the
Небольшая статья про то, как использовать атрибут
Читать (En)
@available attribute in SwiftНебольшая статья про то, как использовать атрибут
@available.Читать (En)
🔥4❤3👍3
Global actor in Swift Concurrency explained with code examples
Ещё одна небольшая статья про Concurrency, а именно разбор Global Actor с примерами кода.
🟢 What is a Global Actor?
🟢 How to use a custom Global Actor?
🟢 Preventing misuse of a Global Actor
Читать (En)
Ещё одна небольшая статья про Concurrency, а именно разбор Global Actor с примерами кода.
Читать (En)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍2🔥2
12 Swift Optimization Secrets Apple Won’t Tell You
Статья с советами, рекомендациями и примерами оптимизации Swift-кода.
🟢 Copy-on-Write (COW): Smart Memory Efficiency
🟢 Value Types vs Reference Types: The Foundation of Swift Performance
🟢 ARC Overhead: Understanding Retain and Release
🟢 Inlining and Function Dispatch
🟢 Looping and Lazy Collections
🟢 Memory Layout Optimization: Struct Alignment Tricks
🟢 Concurrency Optimizations: Making Async Code Fly
🟢 Compiler-Level Optimizations
🟢 Profiling with Instruments
🟢 Real-World iOS Scenarios
🟢 Practical Tips & Best Practices
🟢 Conclusion: Clean Code First, Optimize Second
Читать (En)
Статья с советами, рекомендациями и примерами оптимизации Swift-кода.
Читать (En)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥4❤2
How to Build a CI/CD Pipeline for iOS Projects
Подробная статья в блоге Jetbrains о том, как собрать CI/CD пайплайн для iOS-проектов с помощью TeamCity.
🟢 Code checkout and version control integration
🟢 Building iOS applications with Xcode
🟢 Testing across multiple iOS versions
🟢 Static code analysis and code coverage reporting
🟢 Signing and packaging (IPA files)
🟢 Deploying to TestFlight or the App Store
🟢 Setting up the iOS project
🟢 Initializing fastlane
🟢 Setting up the beta lane
🟢 Configuring fastlane match
🟢 Create a new project in TeamCity Cloud
🟢 Configure build job
🟢 Set up AWS Secrets
🟢 Set up build parameters
🟢 Testing the pipeline
Читать (En)
Подробная статья в блоге Jetbrains о том, как собрать CI/CD пайплайн для iOS-проектов с помощью TeamCity.
Читать (En)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍4❤3
Swift Concurrency и CoreBluetooth: как построить современный BLE-сервис
Автор статьи рассказывает про подводные камни, с которыми столкнулись при совмещении structured concurrency и callback-ориентированного API, как их обойти и на что стоит обратить внимание, если вы тоже решите «прикрутить» современные async/await к старому API.
И всё это на довольно нетипичном кейсе – управление дверьми машины каршеринга через Bluetooth, на случай отсутствия интернет соединения.
Читать (Ru)
Автор статьи рассказывает про подводные камни, с которыми столкнулись при совмещении structured concurrency и callback-ориентированного API, как их обойти и на что стоит обратить внимание, если вы тоже решите «прикрутить» современные async/await к старому API.
И всё это на довольно нетипичном кейсе – управление дверьми машины каршеринга через Bluetooth, на случай отсутствия интернет соединения.
Читать (Ru)
❤8🔥5👍3
Swift на Android: создаём библиотеку
В Swift 6 появилась возможность работать сс минимальной болью вызывать его из Android среды (Java, Kotlin) c помощью JNI*.
Ловите подробную гайд-статью от @imike3049, как это всё можно завести.
Читать (Ru)
В Swift 6 появилась возможность работать с
Android NDK. Это значит, что мы можем писать код на Swift`е и в последствии, Java Native Interface (JNI)– это мост который позволяет нативному коду обращаться кJava Virtual Machine (JVM). Когда вы пишете Java код, то вы используете Android SDK. Но когда вы используете языки как Swift или C++, которые не компилируются в Java байткод, вам уже нужен Android NDK для коммуникации с Java через JNI.
Ловите подробную гайд-статью от @imike3049, как это всё можно завести.
Читать (Ru)
8❤7👍3🔥3
Новые подходы в Swift для тестирования: разбор технологии Swift Testing
Статья с разбором нового фреймворка для юнит-тестирования от Apple, представленного на WWDC 24 – Swift Testing.
🟢 Немного о Swift Testing
🟢 Expectation
🟢 withKnownIssue
🟢 Кастомизация тестов
🟢 Параметризованные тесты
🟢 Возможности миграции с XCTest к Swift Testing
Читать (Ru)
Статья с разбором нового фреймворка для юнит-тестирования от Apple, представленного на WWDC 24 – Swift Testing.
Читать (Ru)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥3❤2
Миграция на SPM: что мы выиграли и что потеряли
Разработчик из Core-команды Туту рассказывает про опыт миграции с CocoaPods на SPM, проблемы с которыми можно столкнуться в процессе и на что стоит обратить внимание.
Читать (Ru)
Разработчик из Core-команды Туту рассказывает про опыт миграции с CocoaPods на SPM, проблемы с которыми можно столкнуться в процессе и на что стоит обратить внимание.
Читать (Ru)
4🔥8❤4👍4
Как Swift Runtime влияет на производительность iOS-приложений
Большая статья, в которой рассказывается про механизмы приведения типов и создания generic-типов внутри Swift Runtime и разбирается метод
Читать (Ru)
Большая статья, в которой рассказывается про механизмы приведения типов и создания generic-типов внутри Swift Runtime и разбирается метод
swift_conformsToProtocolMaybeInstantiateSuperclasses, ĸоторый является узĸим местом в производительности приложения, ĸогда и почему он вызывается и ĸаĸие стратегии использовать для смягчения негативного воздействия.Читать (Ru)
❤4👍3🔥3