Магия AirDrop: Как Apple заставляет Bluetooth и Wi-Fi работать в одной упряжке ✉️ AirDrop работает на паре Bluetooth Low Energy и Wi-Fi, создавая свой фирменный стек протоколов от Apple — AWDL(Apple Wireless Direct Link). Благодаря этому файлы летают между яблочными устройствами быстро и без лишних заморочек. 🔝 С 2026 года AirDrop откроется и для Android — через открытый стандарт Wi-Fi Aware. Теперь можно будет кидать файлы между iPhone и Андроидом без всяких сторонних приложений. 🛡 Для безопа...
EasySwift iOS🍏
Все самое интересное в мире iOS разработки 🧑🏻💻 Предложить статью или новость: @EasySwiftBot По всем вопросам обращаться к @itereznikov
Графики
📊 Средний охват постов
📉 ERR % по дням
📋 Публикации по дням
📎 Типы контента
Лучшие публикации
20 из 20Agentic coding in Xcode 🖥 Xcode 26.3 полностью поддерживает инструменты агентного кодирования, такие как Codex и Claude Code, которые позволяют взаимодействовать с кодовой базой и обсуждать её. ❓ Для активации агентных инструментов необходимо подписаться на один из них и настроить Xcode через меню Настройки ➡️ MCP позволяет агентам кодирования использовать функции Xcode, такие как предварительный просмотр и доступ к документации Apple. 🔗 Рекомендуется создать символические ссылки для обновлени...
isolated(any) and #isolation: Letting Swift Closures Automatically Inherit Isolation ❌ Кто уже перешёл на Swift 6, наверняка заметил, как компилятор стал придираться к concurrency в каждом втором месте - Sendable violation! ℹ️ Ситуация: при использовании withDependencies возникла ошибка компиляции, связанная с тем, что компилятор не смог автоматически определить, что замыкание должно выполняться в контексте MainActor, несмотря на установленную изоляцию по умолчанию. ❓ Почему так? Потому что oper...
Modularizing Swift Apps with SPM 🚨 Когда приложение разрастается, монолитный таргет превращается в ад: медленные сборки, путаница в зависимостях, сложно параллелить работу. В статье разбирается подход к модульности через SPM — без фреймворков, только local packages: Domain, API, Features. 📌 Основная идея: разбить на слои как в clean architecture. Domain — чистые модели, протоколы, use cases (без UIKit/SwiftUI). API — networking, remote data source, зависит от Domain. Features — экраны, бизнес-...
Coding agents for production iOS: a senior engineer's setup for 2x the output Интересная статья про успешный вайб-кодинг. 🔍 Автор — соло iOS‑разработчик в Anytype и уже около 8 месяцев живёт с агентом каждый день. Xcode у него, по сути, превратился в просмотрщик: сборки — через xcodebuild в терминале, сам агент пишет код, запускает тесты, собирает проект, а он потом читает 100% изменений как обычный pull request. Очень здравый посыл: это не «вибекодинг на пет‑проекте», а нормальная инженерия, г...
Мой опыт: async/await миграция (часть 2) 🧠 В прошлый раз рассказал про переход с completion handlers на async/await. Но вручную оборачивать 200+ методов — ад. На самом деле я решил это сделать только потому, что решил, что AI тулы уже на достаточно хорошем уровне и показывают хорошее качество. 😮 Я использовал Cursor. Он взял 80% работы за 2 недели: Cmd+K, промпты, батч‑рефакторинг. ℹ️ Вот сам workflow, чтобы не переполнять контекст модели и поменять много файлов: ➡️ Выделяем legacy файл (или в...
Why Top Teams Trust AI To Maintain Development Standards And Code Quality? 🤔 Кажется, мы наконец дошли до точки, где обсуждать нужен ли AI разработчикам уже скучно. Интереснее другое: как сделать так, чтобы AI не раздувал нам кодовую базу в разные стороны, а наоборот — помогал держать единые стандарты. Статья как раз об этом: почему сильные команды доверяют AI поддерживать code style и качество проекта. 🗒 Стандарты умирают не потому, что команда ленивая, а потому что их enforcement — боль для ...
Juice it up with UIKit Dynamics 😣 UIKit Dynamics — забытый фреймворк для physics‑анимаций, который делает UI живым без Core Animation. Статья показывает, как прикрутить пружинящий список цветов к UICollectionView — пальцем водишь, ячейки подпрыгивают реалистично. ✏️ Как работает: ➡️ UIDynamicAnimator в layout — симулирует физику ➡️ UIAttachmentBehavior на каждую ячейку — пружина, привязанная к центру ➡️ shouldInvalidateLayout(forBoundsChange:) — при скролле (pan gesture) сдвигает anchor пружины...
Поделюсь немного опытом переезда на async/await в пет проекте. ⚠️ UIKit монолит 2019 года — 80% кода на completion handlers. Переписывать всё под async/await казалось адом. Решил идти постепенно: withCheckedContinuation + @MainActor class LegacyAPI { func fetchUser(completion: @escaping (Result<User, Error>) -> Void) } // Обёртка: extension LegacyAPI { @MainActor func fetchUser() async throws -> User { try await withCheckedThrowingContinuation { cont in fetchUser { result in cont.resume(with: re...
NSCache in Swift: Practical Guide ℹ️ NSCache — потокобезопасный кэш, который сам чистится под memory pressure. Статья разбирает типичные ошибки и лучшие подходы: от image caching до generic wrapper. Какие могу быть проблемы без использования враперов: ➡️ Keys/values только NSObject (NSString, не String) ➡️ Нет TTL (time‑to‑live) ➡️ Не generic let cache = NSCache<NSString, UIImage>() cache.setObject(image, forKey: url as NSString) Автор берёт классический подход от Sundell и делает generic wrappe...