DevPrep

Все темы › Архитектура программного обеспечения

MVVM

Middle PRO

Суть

MVVM добавляет между View и Model посредника — ViewModel. Это объект без зависимости от UIKit/SwiftUI, который держит состояние экрана в готовом для показа виде (строки, флаги isLoading, отфильтрованные списки) и предоставляет команды (load(), delete(id:)). View наблюдает состояние и перерисовывается сама; ViewModel о View ничего не знает — поэтому одну ViewModel могут показывать несколько View, а тестировать её можно без UI.

Поток данных в iOS-MVVM в основном однонаправленный: события от View идут в ViewModel, состояние — обратно. Двусторонний binding используется точечно ($viewModel.query для текстового поля).

Механизмы наблюдения по эпохам: KVO/RxSwift/ReactiveCocoa → Combine @Published + ObservableObject (iOS 13) → Observation @Observable (iOS 17) — SwiftUI отслеживает только те свойства, которые реально прочитаны в body, и не перерисовывает лишнего.

Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.

Полный ответ — в DevPrep

Потренируйтесь перед собеседованием

В DevPrep эти ответы превращаются в задачи на минуту: что напечатает код, найди баг, пробное собеседование. По задаче в день.

Скачать DevPrep в App Store