Выбор ответа Junior Навигация, координаторы и deep links спрашивают часто обновлено

Зачем нужен Coordinator

Вопрос

Какую проблему решает паттерн Coordinator в iOS?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Убирает из контроллеров знание о соседних экранах: переходы и сборку делает отдельный объект. Без координатора экран A создаёт экран B и сам делает push: экраны связаны, их нельзя переиспользовать в другом потоке, а deep link требует знать цепочку контроллеров.

Варианты ответа

  1. Ускоряет анимации переходов: координатор заранее создаёт следующий экран в фоне
  2. Убирает из контроллеров знание о соседних экранах: переходы и сборку делает отдельный объектправильный ответ
  3. Заменяет UINavigationController собственным стеком экранов, который проще тестировать и расширять
  4. Сохраняет состояние экранов на диск, чтобы поток восстанавливался после выгрузки приложения

Разбор

Без координатора экран A создаёт экран B и сам делает push: экраны связаны, их нельзя переиспользовать в другом потоке, а deep link требует знать цепочку контроллеров. Координатор владеет навигацией, а экран лишь сообщает «пользователь выбрал товар». UINavigationController при этом используется как инструмент, анимации и сохранение состояния тут ни при чём.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме