SwiftUI или UIKit: что стоит за будущим мобильной разработки на iOS
15.08.24, Чт, 08:56, Мск,
Рынок мобильных приложений продолжает стремительно развиваться, ежегодно наращивая объем и доходность. Мировые потребительские расходы на приложения, согласно отчёту Data.ai, в 2023 году выросли на 3% и достигли $171 млрд. Разработчикам приходится принимать непростые решения, чтобы выбрать правильную платформу для своих проектов и конкурировать за внимание пользователя. Вместе с Алексеем Гуриным, ведущим разработчиком мобильных приложений для iPhone в крупных технологических компаниях (tutu.ru), разбираемся, как изменило рынок появление SwiftUI и какие задачи эффективнее решаются с его помощью.
Алексей, расскажите, какие задачи эффективнее решаются с помощью SwiftUI и как изменился процесс разработки с его появлением?
SwiftUI, который представили Apple на Всемирной конференции разработчиков в 2019 году, представляет собой современный фреймворк для создания пользовательских интерфейсов различных платформ Apple, включая мобильные приложения для iOS, macOS, tvOS и watchOS. SwiftUI упрощает разработчикам создание интерактивных и визуально привлекательных пользовательских интерфейсов. С появлением SwiftUI разработка ускорилась благодаря более лаконичному и декларативному стилю описания верстки. Кроме того, понизился порог входа для новых разработчиков, так как кривая обучения у SwiftUI несколько отличается от UIKit, ее можно описать как easy to learn difficult to master. Для состоявшихся разработчиков это стало возможностью перестроиться на совершенно новый подход и оценить недостатки и преимущества.
Раз уж вы упомянули про недостатки и преимущества, расскажите, какие они у SwiftUI?
Неоспоримыми преимуществами, безусловно, являются кроссплатформенность и декларативный стиль описания компонентов, который лишен избыточности настройки UIKit. Однако он весьма непривычен для разработчиков, использующих другие инструменты, поскольку задает совершенно другую парадигму мышления и подхода к созданию и настройке элементов верстки.Открыта регистрация на конференцию Data Fusion 2025
К преимуществам стоит отнести и систему предпросмотра, которая позволяет практически мгновенно наблюдать результат изменений кода без необходимости пересобирать и перезапускать приложение.
Из минусов можно отметить сильную привязку к версиям операционной системы, поскольку у Apple весьма консервативный взгляд на добавление новых возможностей для разработчиков, и отсутствие некоторых важных компонентов.
Можно ли сказать, что SwiftUI полностью заменит ранее выпущенные инструменты для разработки?
На сегодняшний момент SwiftUI все еще не имеет замены для мощнейшего инструмента из UIKit - коллекции. Существующие аналоги имеют крайне скудную настройку и стабильность работы. Соответственно всевозможные ленты контента, где важна производительность и надежность, разработчики вынуждены либо упрощать, либо переходить на устоявшиеся инструменты, интеграция с которыми тоже может вызывать проблемы.
Как эффективно сочетать SwiftUI с ранее выпущенными инструментами?
Apple предоставляет полноценный набор инструментов для интеграции SwiftUI с UIKit, однако стоит очень внимательно их изучить стараться минимизировать точки интеграции, поскольку они могут работать нестабильно или не давать желаемый результат.
Расскажите подробнее про особенности взаимодействия разных технологий?
SwiftUI является кроссплатформенной технологией, из-за чего многие компоненты в зависимости от операционной системы являются обертками над нативными. В случае iOS мы можем сказать, что «под капотом» частично продолжает работать тот же UIKit, поэтому можно пользоваться некоторыми его функциями для настройки в обход ограничений.
Если говорить о непосредственной интеграции, то у разработчиков есть возможность интегрировать как UIKit в SwiftUI, так и наоборот. На стыке все зависит от сложности компонентов и компетентности разработчика, это как раз часть difficult to master.
Давайте подробнее поговорим о критериях выбора инструментов - когда выбирать SwiftUI, а когда остановить выбор на других инструментах?
Когда выбирать SwiftUI
Для небольших проектов однозначно стоит, в первую очередь, рассматривать SwiftUI как основной инструмент для создания верстки.
В случае больших проектов стоит тщательно выполнить оценку вариантов полного или частичного переезда и подготовить стратегию для этого процесса. Зачастую делается выбор в сторону использования SwiftUI только в новых «фичах».
Когда предпочесть предыдущее поколение инструментов
В случае, когда минимальная версия операционной системы сильно ограничивает доступный функционал (процесс разработки будет комфортным, начиная от версии iOS 16) или при реализации длинных списков с разнообразной информацией, где важна производительность.
Какие бы вы дали рекомендации из личного опыта начинающим коллегам?
Не стоит создавать большие и сложные компоненты, лучше стараться декомпозировать на небольшие переиспользуемые атомы, так как это дает выигрыш как в производительности в силу технических особенностей SwiftUI, так и в простоте поддержки кода.
Стоит постоянно практиковаться, набивать руку и углублять экспертизу, поскольку SwiftUI содержит невероятное количество нюансов, которые стоит всегда держать в голове и учитывать при разработке.
Также я бы рекомендовали не забывать просить бизнес о запуске процесса поднятия минимальной версии, так как действует правило: нужная и очень важная функциональность всегда находится на одну версию выше.
Автор: Юрий Мельниченко