Какой опыт работы с SwiftUI и UIKit?
Что проверяют
Насколько глубоко вы знаете оба фреймворка и умеете ли выбирать между ними под задачу, а не по моде. Следом обычно просят рассказать, как вы совмещали их в одном проекте и во что упирались в SwiftUI.
Как отвечать
Стройте ответ на своих проектах: какое приложение, какой минимальный iOS, что было на UIKit, что на SwiftUI и почему. Опорные точки:
- UIKit: Auto Layout,
UICollectionViewCompositionalLayoutиUICollectionViewDiffableDataSourceдля сложных списков, ручное управление жизненным циклом контроллеров. Сильная сторона: полный контроль и предсказуемость на экранах с нестандартной вёрсткой; - SwiftUI: декларативное описание интерфейса, состояние через
@State,@Binding,@Environment. На iOS 17 и выше модели удобно делать через макрос@ObservableвместоObservableObjectс@Published: вью перерисовывается только при изменении тех свойств, которые реально читает; - навигация:
NavigationStackсnavigationDestinationпришёл на сменуNavigationView, и это частая причина, почему проекты поднимают минимальную версию; - совмещение: SwiftUI внутри UIKit через
UIHostingController, в ячейках коллекций черезUIHostingConfiguration, обратное направление черезUIViewRepresentableиUIViewControllerRepresentable.
Покажите позицию: новые экраны многие команды пишут на SwiftUI, а UIKit остаётся там, где нужна тонкая работа с прокруткой, клавиатурой или текстом. Хорошо звучит пример постепенной миграции: какой экран перевели первым и что пришлось оставить.
Если SwiftUI знаете только по пет-проекту, так и скажите и назовите, что успели попробовать. Это честнее, чем выдавать хакатон за продакшен.
Где спотыкаются
Называют SwiftUI инструментом только для прототипов. Этот тезис давно устарел, крупные приложения пишут на нём целиком.
Путают обёртки состояния: создают модель через @ObservedObject прямо во вью, и она пересоздаётся при каждом обновлении родителя. Для владения моделью нужен @StateObject или @State с @Observable.
Не могут объяснить, как SwiftUI обновляет интерфейс: что body вызывается многократно и держать в нём тяжёлые вычисления нельзя.