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
Компьютерное зрение + ARKit = AR-навигация внутри зданий
Крутой материал – ребята из 2ГИС запилили реалтайм навигацию внутри зданий, с помощью AR через камеру.
В статье рассказывают, как подошли к задаче с точки зрения компьютерного зрения, какие грабли собрали, как ускоряли локализацию и как боролись с погрешностями ARKit.
Читать (Ru)
Крутой материал – ребята из 2ГИС запилили реалтайм навигацию внутри зданий, с помощью AR через камеру.
В статье рассказывают, как подошли к задаче с точки зрения компьютерного зрения, какие грабли собрали, как ускоряли локализацию и как боролись с погрешностями ARKit.
Читать (Ru)
🔥6👍2❤1
Xcode: ключевые инструменты для ручного тестирования мобильных приложений
Автор статьи делится опытом тестирования мобильных приложений в Xcode для обнаружения критических багов в iOS-приложениях на этапе разработки.
👉 Симулятор устройств и управление конфигурациями
👉 Работа с логами и анализ крашей
👉 Инспектирование верстки
👉 Мокирование сетевых запросов
P.S. Материал может быть полезным для QA
Читать (En)
Автор статьи делится опытом тестирования мобильных приложений в Xcode для обнаружения критических багов в iOS-приложениях на этапе разработки.
👉 Симулятор устройств и управление конфигурациями
👉 Работа с логами и анализ крашей
👉 Инспектирование верстки
👉 Мокирование сетевых запросов
P.S. Материал может быть полезным для QA
Читать (En)
👍5🔥4❤3
Combine – швейцарский нож iOS-разработчика. Или нет?
Большая статья с обзором Combine: как устроен фреймворк, какие сущности лежат в основе и примеры использования.
Читать (Ru)
Большая статья с обзором Combine: как устроен фреймворк, какие сущности лежат в основе и примеры использования.
Небольшая сводка: Combine – фреймворк для работы с асинхронными событиями в декларативном стиле. Он помогает разработчикам управлять потоками данных, избавляя от множества колбэков, ручного управления очередями и других сложностей, связанных с асинхронностью.
Читать (Ru)
👍6🔥2❤1🕊1