iOS Broadcast
3.31K subscribers
1.7K photos
84 videos
973 links
Подборка новостей и статей для iOS разработчиков.

Новости Kotlin и мультиплатформы @kotlin_broadcast
Новости Android @android_broadcast
Реклама и прочее @android_broadcast_bot
Download Telegram
🐥 Модификаторы условного представления в SwiftUI
Интересная идея сделать логический модификатор и что-нибудь им сломать. Важно только понимать как такой модификатор может повлиять на логику отрисовки, анимации и производительность.

Что такое модификатор условного представления:
🟢Применяется к View только при выполнении условия
🟢Инкапсулирует условную логику для чистоты кода
🟢Упрощают композицию View
🟢Сокращают дублирование кода и улучшают читаемость

Скрытые побочные сайд-эффекты:
🔴Потеря состояния (@State, @FocusState, @StateObject)
🔴Проблемы с анимацией при изменении условий
🔴Сложно отлавливаемые ошибки в сложных пользовательских интерфейсах

Мое мнение, что лучше вообще не использовать. Более подробно про подводные камни такого подхода опысывал Chris Eidhof в блоге objc.io.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍94🔥2
🆓 Эволюция архитектуры iOS приложения Tripadvisor
Очень актуальный для меня статья про опыт миграции команды Tripadvisor с MVVM-C на модную TCA. Зачем?

Проблемы
🔴Навигационная энтропия: координаторы создают сеть навигационных возможностей, трудно задокументировать
🔴Зависимость от UIKit: архитектура coordinator привязывает к контроллерам UIKit, несовместима с SwiftUI
🔴Трудности в разработке: сложность для новых разработчиков, необходимость многократного дублирования кода
🔴Проблемы с Combine: асинхронный характер Combine усложняет отладку

Требования к новой архитектуре
🟣Простая, предсказуемая навигация
🟣Совместимость с SwiftUI
🟣Устранение дублей
🟣Снижение барьеров для входа новых разработчиков
🟣Хорошо документированная архитектура

Преимущества TCA
🟡Навигация на основе состояния, соответствующая SwiftUI
🟡Исчерпывающие возможности тестирования
🟡Встроенная поддержка асинхронности
🟡Документация и поддержка сообщества

Новые знания и уроки
🔵Изменение ментальной модели с действий на состояние
🔵Проблемы с производительностью и иерархическим моделированием
🔵Использование мутаторов для совместного использования логики мутации

Преимущества
🟢Уменьшенный объем кода на 15-30%
🟢Устранение шаблонного кода координатора, дублированной обработки событий, упрощенная логика навигации
🟢Ускорение разработки и снижение нагрузки на техническое обслуживание
🟢Более надежный код, улучшенный охват тестированием, ускоренные циклы разработки
🟢Улучшенная интеграция SwiftUI, более четкая архитектура
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥21
📱 Создание больших приложений на SwiftUI
Нет ничего более спорного чем архитектура. Выбор архитектуры зависит от типа приложения. Данная статья представляет из себя гайд по решению базовых вопросов при работе с MV паттернами. Статья описывает не только теорию, но и содержит очень много практических примеров. Особенно ценным мне показался комплексный подход к решению, автор не только знакомит с концепциями, но и в деталях показывает какие проблемы могут возникнуть и к какому решению пришел он. Только часть топиков из статьи:
🟡Модульная архитектура
🟡Понимание структуры MV - паттернов
🟡Отличие концепции View и экрана
🟡Концепция виртуального DOM в React и SwiftUI
🟡Проблемы с традиционным подходом MVVM в SwiftUI
🟡Использование Store в качестве агрегатных модели
🟡Использование @EnvironmentObject
🟡Использование кэширования
🟡Модули и их роль
🟡Навигация в SwiftUI
🟡Отображение ошибок
🟡Форматирование данных
🟡Методы написания тестов
🟡Проблемы с тестированием реализации
🟡E2E-тестирование
🟡Интеграционное тестирование
🟡Модульное тестирование и доступ к данным
🟡Тестирование пользовательского интерфейса
🟡Баланс между модульными и пользовательскими тестами

Возникает логичный вопрос, откуда такое рвение делиться знаниями? В конце ссылка на авторский платный курс за 150$, но статья и сама по себе хороша
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
2
🐥 ignoredByLayout() — Как применить геометрические эффекты, не нарушая макет
ignoredByLayout — недооцененный API в SwiftUI. Мало информации, необычные сценарии использования. Идем в документацию:
🔵Возвращает эффект, который применяется только при отрисовке
🔵Отключает изменения макета во время трансформации
🔵View игнорирует преобразование при вычислениях макета

Понятнее не стало, разбираемся в природе ignoredByLayout на практике:
🟢Визуальное преобразование не меняется.
🟢Система игнорирует геометрическое преобразование.
🟢Свойства геометрии передаются без изменений.

В статье приводится сразу несколько практических сценариев использования, сам я никогда не сталкивался с ними, но теперь готов к встрече.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍52
This media is not supported in your browser
VIEW IN TELEGRAM
🧑‍✈️ Режим агента и поддержка MCP в Copilot для Xcode
Если вы до сих пор не попробовали Copilot, самое время! В актуальном релизе появился режим агента и поддержка MCP 😍. Copilot может выполнять многоступенчатые задачи, такие как анализ кодовой базы и выполнение команд терминала. А режим агента позволяет Copilot выполнять итерацию по собственному коду, обнаруживать и исправлять ошибки.

Режим агента:
🔵Семантическое понимание: Copilot интерпретирует запрос и анализирует кодовую базу.
🔵Предложение по плану: Copilot разбивает задачу на этапы и формулирует план действий.
🔵Выполнение плана: Copilot запрашивает подтверждение для выполнения действий.
🔵Задача выполнена: Copilot проверяет работу и предоставляет сводную информацию о изменениях.

Поддержка MCP:
🟣Model Context Protocol (MCP) позволяет моделям ИИ взаимодействовать с внешними инструментами через единый интерфейс.
🟣Copilot поддерживает MCP, что расширяет его возможности в Xcode.
🟣Настройка локальных серверов MCP возможна через файл конфигурации.
🟣Инструменты MCP можно вызывать непосредственно в режиме агента с помощью естественного языка.
Please open Telegram to view this post
VIEW IN TELEGRAM
1
🐥 Swift Enums vs Structs - Выбор лучшего инструмента для работы
Не самое типичное сравнение, не классы и структуры, а структуры и перечисления.
🔘Перечисления идеально подходят для конечного состояния, обеспечивают безопасность во время компиляции, switch, подходят для четко определенного набора состояний.
🔘Структуры расширяемые и гибкие. Подходят для расширяемости и добавления дополнительных вариантов, особенно полезны для стилей и конфигураций. Позволяют создавать пользовательские значения.
🔘Выбирать одно не обязательно, можно совмещать для упрощения работы. Перечисления могут содержать множество вычисляемых свойств, что может быть утомительно, а структуры использовать перечисления для ограничения количества доступных состояний.

Преимущества перечислений
🟢Обеспечивают безопасность и ясность для управления состоянием
🟢Полная проверка во время компиляции
🟢Взаимоисключающие состояния
🟢 Сопоставление шаблона с соответствующими значениями

Преимущества структур
🟢Обеспечивают расширяемость для будущих случаев
🟢Система настройки или стилизации
🟢Разрешение пользовательских изменений
🟢Сохранение сложного состояния с несколькими свойствами

Как выбрать? Перечисления подходят для конечного, четко определенного набора состояний. Структуры подходят для расширяемости и гибкости. Выбор зависит от важности безопасности во время компиляции или гибкости во время выполнения и вашей готовности к бойлерплейту и бесконечным switch.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
3
🧑‍💻 iOS 26 на подходе
Судя по слухам, на WWDC нас ожидает серьезный сюрприз от Apple не только в дизайне iOS но и в нейминге. Apple изменит подход к названию своих операционных систем, iOS 26 вместо iOS 19. Аналогично будут названы macOS 26, iPadOS 26, watchOS 26, tvOS 26 и visionOS 26.

У меня один вопрос, почему 26? Не 20, не 25 в 2025г. Удивительный мир маркетинга
Please open Telegram to view this post
VIEW IN TELEGRAM
5