Как определить источник верстки и логики для нового экрана без кода
Что проверяют
Умеете ли вы быстро ориентироваться в большом чужом проекте: открыли экран в приложении и за пару минут нашли, какой класс его рисует и откуда берутся данные. Заодно проверяют, помните ли вы, что экран бывает не только нативным. Следом спрашивают, что вы сделаете, если экран окажется серверным.
Как отвечать
Сначала определите тип экрана, потом ищите конкретное место:
- Debug View Hierarchy: запустите приложение из Xcode, откройте экран и снимите иерархию кнопкой на панели отладки. Инспектор покажет классы всех вью и контроллер-владелец.
UIHostingControllerозначает SwiftUI,WKWebViewозначает веб-страницу, а набор одинаковых универсальных ячеек часто выдаёт серверную вёрстку; - LLDB: символьная точка останова на
-[UIViewController viewDidAppear:]с действиемpo $arg1и автопродолжением печатает каждый открытый контроллер. Дерево контроллеров выводит приватный_printHierarchy, только для отладки; - сеть: Proxyman или Charles покажут, какие запросы уходят при открытии экрана. Если приходит JSON с описанием блоков и типов компонентов, логика вёрстки на бэкенде, и дальше вопрос к его команде;
- конфигурация: экран может включаться фича-флагом или A/B-экспериментом через remote config, это стоит проверить до поиска в коде;
- текст на экране: поиск по видимой строке в String Catalog (
.xcstrings) илиLocalizable.stringsдаёт ключ, а по ключу находится место использования.
Из сторонних инструментов подойдут Reveal и Lookin.
Если же имеется в виду экран, которого ещё нет, ответ другой: вёрстка идёт из дизайн-системы и макета в Figma, где компоненты названы так же, как в коде, а логика из требований и контракта API с бэкендом.
Где спотыкаются
Ищут UIViewController там, где экран отдаёт WebView или сервер, и тратят час на поиск кода, которого нет.
Находят контроллер и на этом останавливаются. Данные часто готовит ViewModel, Interactor или координатор, и их нужно найти по зависимостям контроллера, иначе источник логики так и не найден.
Отвечают про процесс с дизайнером и прототипы, хотя спрашивали про поиск в работающем проекте. Если формулировка неясна, уточните её в начале ответа.