Специализация
Python Backend Developer
Java Backend Developer
Node.js Backend Developer
Golang Backend Developer
React Frontend Developer
Выберите навыки
React
JavaScript
Git
Redux
Webpack
Сложность
1-3
4-6
7-8
9-10
Рейтинг вопросов
1
2
3
4
5
Подпишись на React Developer в телеграм
Как реализовать кастомные UI-компоненты в SwiftUI?
В SwiftUI кастомный компонент — это просто структура, соответствующая протоколу View, в которой вы описываете комбинирование встроенных вью и модификаторов. Можно сделать свой struct MyButton: View, добавить любые параметры («состояние», замыкания) и внутри тела разместить Text, Image и т. д. Такой компонент легко переиспользовать и настраивать.
Почему в проекте предпочитают ручную верстку на UIKit вместо SwiftUI?
UIKit более зрелый и предсказуемый: у него полная поддержка iOS-функций, гибкая настройка и стабильность во всех версиях. SwiftUI быстрее развивается, но ещё имеет ограничения в кастомизации, отладке и поддержке старых ОС, поэтому для крупных проектов часто отдают предпочтение проверенным инструментам UIKit.
Как реализована навигация в SwiftUI (NavigationStack vs NavigationView)?
NavigationView — более ранний контейнер для навигации, который оборачивает вью в стек. NavigationStack появился в iOS 16 и управляет путём как списком состояний, даёт более гибкий контроль и поддержку глубоких переходов. Для новых проектов рекомендуют NavigationStack.
Как добавить SwiftUI-вью в UIKit-контроллер через UIHostingController?
Создаёте UIHostingController(rootView:) с вашим SwiftUI-вью, добавляете его как дочерний контроллер в UIKit-контроллер, устанавливаете фрейм или constraints, и вызываете addChild/didMove(toParent:). После этого SwiftUI-вью отображается внутри UIKit.
Какой минимальный таргет iOS используется для SwiftUI?
SwiftUI появился в iOS 13, поэтому минимальный таргет для использования базовых возможностей — iOS 13. Некоторые новые фичи SwiftUI требуют iOS 14, 15 или 16, но для базового UI достаточно iOS 13.
Какие ограничения или проблемы возникают при работе с SwiftUI?
В каких случаях SwiftUI подходит для продакшена, а в каких — нет?
Почему большие SwiftUI-экраны сложно дебажить?
Какие проблемы SwiftUI возникают на старых устройствах?
Почему SwiftUI может проигрывать UIKit по производительности?
Рейтинг:
2
Сложность:
6
SwiftUI ограничен в версиях ОС (iOS 13+), имеет недоработки в навигации и анимациях, иногда трудно отлаживать ошибки, мало готовых компонентов и низкоуровневого контроля (CALayer). При интеграции со сложными UIKit-решениями или в существующих проектах часто возникают проблемы со стабильностью Preview, производительностью на больших списках и ограниченной кастомизацией.
Рейтинг:
5
Сложность:
7
Вопрос проверяет способность трезво оценивать SwiftUI как инструмент, а не воспринимать его как универсальную замену UIKit.
Рейтинг:
5
Сложность:
7
Большие SwiftUI-экраны сложно дебажить из-за декларативного подхода и отсутствия привычного пошагового контроля, как в UIKit. View описывают состояние, а не процесс, поэтому сложно понять, что именно вызвало обновление UI. Ошибки часто проявляются косвенно: через лишние перерисовки, потерю состояния или неожиданные анимации. Также усложняет отладку активное использование замыканий и value-types.
Рейтинг:
4
Сложность:
6
На старых устройствах SwiftUI чаще сталкивается с проблемами производительности и плавности. Частые перерисовки, сложные иерархии и анимации могут вызывать лаги и пропуски кадров. Также SwiftUI активно использует современные API и runtime-механизмы, которые хуже оптимизированы для старого железа. В результате интерфейс может работать заметно хуже, чем аналогичный UIKit-экран.
Рейтинг:
5
Сложность:
8
SwiftUI может быть медленнее UIKit из-за дополнительного слоя абстракций и автоматических механизмов обновления UI. UIKit дает более прямой контроль над жизненным циклом и перерисовкой элементов. В SwiftUI изменения состояния могут вызывать лишние пересчеты и layout-проходы. Это особенно заметно в списках, анимациях и сложных экранах.
Рейтинг:
2
Сложность:
5
Рейтинг:
2
Сложность:
5
Рейтинг:
2
Сложность:
5
Рейтинг:
2
Сложность:
6
Рейтинг:
2
Сложность:
7