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

Новости Kotlin и мультиплатформы @kotlin_broadcast
Новости Android @android_broadcast
Реклама и прочее @ab_manager
Download Telegram
🔨 WEDO 2.0 45300
Экспериментальная рубрика про проекты из реальной жизни. Долго думал, стоит ли делиться не iOS темами в канале и решил делиться с вами тем что связано с инженерией и программированием. Сегодня хочу поделиться первым опытом взаимодействия с набором для робототехники. Изначально это проект Lego, я купил аналог, который совместим с оригинальным ПО. Суть проекта была найти общее хобби с ребенком 6 лет. Я сам люблю программирование и конструкторы, а дочь хотела пойти на кружок робототехники. Мой опыт:
🟢Простой WYSIWYG редактор для создания программ.
🟢Обучающее приложение есть под iPad, Mac OS, Windows, Android
🟢Есть все необходимые конструкции для обучения: переменные, циклы, ветвления
🟢В комплекте кроме самого ресурсного набора (конструктора):
🟣CмартХаб-контроллер, подключается по Bluetooth, питается от батареек, имеет управляемый светодиод и 2 разъема
🟣Мотор
🟣Датчик наклона
🟣Датчик приближения
🟢Для старта в оригинальном приложении множество уроков с подробными инструкциями и открытыми заданиями, погружающие в основы доступных механизмов
🟢Очень интересно сделана интеграция с микрофоном и динамиком. IDE использует микрофон и динамик ноутбука, а не робота, что позволяет реализовать управление голосом и воспроизведение любых звуков
🟢Огромная библиотека с инструкциями для создания 583 роботов и механизмов
🟢За счет того что это Lego (или копия lego) можно использовать любой конструктор lego для роботизации, например моторизировать наборы серии technic
🟢Возможно подключить несколько хабов и моторов и взаимодействовать в рамках одной программы

Как вам подобная рубрика? 👍 / 🤔
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍234🤔1
📱 Проблема: Растущий объем View
По мере роста проектов SwiftUI элементы View становятся длинными и сложными. Простой экран быстро превращается в десятки вложенных VStack, HStack и пользовательских модификаторов.

Искушение: extension-ы и вычисляемые свойства
🔵Многие разработчики пытаются уменьшить размер кода, перемещая его части в расширения.
🔵Это улучшает удобочитаемость тела, но не решает проблему повторного использования и сопровождения.

Альтернативный подход: извлечение и повторное использование
🔵Извлекайте специальные SwiftUI View для каждой части с четкой ответственностью.
🔵Создавайте повторно используемые модификаторы View для согласованности и простоты тестирования.
🔵Используйте общие расширения для просмотра для часто используемых макетов.

Эмпирическое правило для хорошей архитектуры SwiftUI:
🔵Если элемент пользовательского интерфейса имеет четкое назначение и потенциал для повторного использования, извлекайте его.
🔵Если нет, сохраняйте его локальным или используйте вычисляемое свойство.
🔵Разбивайте код на чистые, композиционные и тестируемые компоненты для улучшения архитектуры.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍6
🐥 Важный нюанс при работе с taskGroup
Интересная особенность работы taskGroup которая не вызывает удивления если уже знаешь о ней, но может привести к неожиданным результатам, если написать похожий код не сильно задумавшись. Суть особенности отлично представлена в примере:
🔵Сниппет кода имитирует сценарий использования withTaskGroup, метод fetchData заменяет сетевой запрос случайной длительности
🔵В taskGroup добавляются задачи по вызову метода fetchData
🔵В конце результат выполнения методов fetchData cсобираются в итоговый массив results
🔵results в том порядке, в котором они были возвращены задачами, а не в том порядке, в котором они были созданы
🔵Чтобы восстановить исходный порядок, требуется добавить индексы в кортеж
В целом, не на столько важно сохранять исходный порядок, важно понимать что порядок будет случайным и не стоит надеяться на сохранение исходного порядка.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
🔨 Combine – швейцарский нож iOS-разработчика. Или нет?
Несмотря на то что я чаще привожу примеры статей про Swift Concurrency, в сердечке все равно Combine. И вот отличная статья для всех, кто еще не использует Combine и сомневается в его полезности.
🔵Combine - швейцарский нож iOS-разработчика для работы с асинхронными событиями в декларативном стиле.
🔵Combine помогает разработчикам управлять потоками данных, избавляя от множества колбэков и ручного управления очередями.
🔵Combine состоит из трех сущностей: Publisher, Operator и Subscriber.
🔵Publisher генерирует значения или ошибки и отправляет их Subscriber.
🔵Operator фильтрует или комбинирует значения между Publisher и Subscriber.
🔵Subscription управляет передачей данных от Publisher к Subscriber и контролирует объем запрошенных данных.
🔵Subscriber является получателем данных от Publisher и обрабатывает их.
🔵Combine интегрируется в SwiftUI через @Published, @ObservedObject, @StateObject, .onReceive(_:) и @EnvironmentObject

Прелесть Combine в том, что его можно объяснить объяснить за несколько часов, за несколько дней по-настоящему освоить и больше никогда не быть прежним
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21👍1🤔1
🐥🧰 Первый взгляд на Swift SDK for Android
Давайте разберемся, что же нам представили. Swift продолжает выходить за пределы Apple-эко­системы: представлена Nightly Preview версии SDK для Android.
🔵SDK поставляется как часть инсталлятора для Windows или как отдельная загрузка для Linux / macOS.
🔵Опубликован Getting Started guide и пример-репозитории Swift for Android Examples, показывающие end-to-end workflow (Swift код на Android)
🔵Более 25 % пакетов в Swift Package Index уже сборочно поддерживают Android.
🔵В рамках SDK предусмотрена межъязыковая интероперабельность через проект swift‑java: библиотека + генератор биндингов Java ⬅️➡️ Swift.

Как это работает:
🟢SDK подключается к Android NDK / Gradle через toolchain Swift.
🟢Swift-модули компилируются в .so-библиотеки и вызываются из Java.
🟢UI-слой остаётся нативным — Compose / View.
🟢Предполагается использование стандартного Swift-компилятора, адаптированного для Android-платформы (через Android NDK и соответствующие архитектуры).
🟢SDK пока в preview/nightly статусе — то есть инструментальная цепочка и CI ещё на стадии активной доработки.
🟢Swift-пакеты, которые уже поддерживают Android-таргеты, можно переиспользовать без переписывания на Kotlin/Java — особенно слои бизнес-логики, модели данных, алгоритмы.
🟢UI-слой пока остаётся нативным на Android (Compose/View)
🟢Проект swift-java: автоматически генерируются биндинги, это значит: можно в существующем Android-проекте подключить Swift-модуль, либо начать приложение в Swift, но обращаться к Android API/библиотекам.
🟢Альтернатива Kotlin Multiplatform (KMP). В KMP логика пишется в Kotlin и используется на iOS; здесь — логика в Swift и используется на Android. Зависит от того, на каком ЯП логика уже написана

Текущие проблемы:
🔴SDK в превью: не рекомендуется для production-релизов — возможны баги, нестабильности, отсутствие обратной совместимости
🔴Интеграция SwiftUI с Android пока даже не анонсирована — основной фокус на логике.
🔴Инструменты, отладка, CI, работа с эмулятором Android
🔴Не все архитектуры/NDK-версии могут быть поддерживаются
🔴Форум полон описанием крашей и проблем в рантайме
🔴Хотя проект swift‑java генерирует, остаются нюансы: вызовы, управление памятью, поддержка наследования, интерфейсов (тред на реддит)
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍1🔥1
📱 Cветящийся, анимированный эффект обводки как в Apple Intelligence
Новый язык дизайна Apple - светящийся, анимированный эффект обводки для выделения форм и компонентов. Если вы захотите внедрить подобный эффект для индикации работы AI - можно взять готовое расширение SwiftUI и применить этот эффект.
🟢Можно применить как бекграунд или оверлей
🟢Гибкая кастомизация толщиты линий, блюра и анимаций
🟢Градиент автоматически генерирует рандомизированные по позициям цвета
🟢Поддерживает уменьшение движения accessibility настройку
🟢Работает со всеми фигурами (Circle, Capsule, RoundedRectangle, итд)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥42
🔨iOS 26.1 Beta 4: новые возможности Liquid Glass и другие "особенности"

🟢Переключатель внутри Display & Brightness. В релизе iOS 26.1 Developer Beta 4 Apple впервые дала пользователям контроль над «стеклянным» интерфейсом Liquid Glass. В настройках дисплея, позволяющий выбрать два режима: Clear (прозрачный) и Tinted (более непрозрачный, с высоким контрастом). Для нас это означает, что интерфейсы должны корректно реагировать на оба режима и выглядеть гармонично при разной степени прозрачности.
🟢Новые языки Apple Intelligence (Русского нет). Китайский, датский, голландский, норвежский, португальский, шведский, турецкий, вьетнамский

Проблем, не много:
🔴Не работает ограничение allowCamera в MDM. Один из авторов форума сообщает, что параметр allowCamera=false, который предназначен для запрета доступа к камере на управляемых устройствах
🔴Сбой Broadcast Extension. Это полностью ломает функциональность потоковых приложений и любой другой программы, использующей Broadcast Extension (по сути работает только штатная запись экрана в Фото)

🗓iOS 26.1, по оценкам выйдет в первой половине ноября. Чем раньше вы начнёте тестирование, тем меньше сюрпризов будет после официального релиза.

Заметели какие-то особенности?
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1
🔨Основные нововведения в Xcode 26.1 beta
🟢Исправления в Instruments. В бета‑версии устранена проблема, из‑за которой инструмент Processor Trace не позволял записывать трейсы на устройствах семейства iPhone 17
🟢Кэширование Swift Package Manager. Пакеты, загружаемые из реестра, теперь кэшируются локально с протуханием через час, что уменьшает количество сетевых запросов при сборке
🟢Улучшения Coding Assistant. Во второй бете улучшено потребление памяти Coding Assistant для проектов с большими git‑репозиториями
🟢Исправления симулятора. Команда simctl list devices --json снова корректно отображает все устройства, когда на машине установлены несколько рантаймов с одинаковыми идентификаторами

Известные проблемы
🔴Проблема запуска симуляторов. После обновления macOS до Sequoia 15.6 симуляторы могут не запускаться при первой сборке. Apple рекомендует выполнить команду xcrun simctl runtime dyld_shared_cache update --all перед запуском симулятора, чтобы завершить генерацию shared‑кэша dyld
🔴Coding Assistant: поиск текста. Инструмент поиска в файлах может возвращать неверные номера строк, что приводит к ошибкам при замене текста
Please open Telegram to view this post
VIEW IN TELEGRAM
3