Выбор ответа Junior MVC, MVP, MVVM, MVI, VIPER спрашивают часто обновлено

Почему MVC в iOS называют Massive View Controller

Вопрос

Почему классический Apple MVC в iOS часто превращается в Massive View Controller?

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

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

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

Коротко

Правильный ответ: Контроллер связан с view и жизненным циклом, и в него складывают UI-логику, запросы и форматирование. В UIKit UIViewController одновременно управляет view и получает события жизненного цикла, поэтому туда «естественно» попадают сеть, валидация, форматирование и навигация.

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

  1. MVC запрещает выносить код из контроллера в отдельные классы, иначе нарушается разделение ролей
  2. В MVC модель обязана быть синглтоном, поэтому вся работа с ней идёт через контроллер
  3. Контроллер связан с view и жизненным циклом, и в него складывают UI-логику, запросы и форматированиеправильный ответ
  4. MVC не поддерживает Auto Layout, поэтому вёрстку приходится писать вручную в контроллере

Разбор

В UIKit UIViewController одновременно управляет view и получает события жизненного цикла, поэтому туда «естественно» попадают сеть, валидация, форматирование и навигация. Паттерн этого не требует, это следствие отсутствия границ. MVVM, MVP и VIPER как раз вводят отдельные объекты для логики. Запретов на вынос кода или требований к модели в MVC нет.

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

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