Good structure keeps apps maintainable. iOS commonly uses MVC and increasingly MVVM.
MVC
Model (data) ↔ View (UI) ↔ Controller (glue). Simple, but controllers can become huge ("Massive View Controller").
MVVM
A ViewModel holds presentation logic and exposes ready-to-display state, keeping view controllers thin and testable.
final class ProfileViewModel {
private(set) var displayName = ""
func load(_ user: User) {
displayName = user.name.uppercased()
}
}
Summary
Separate data, UI and logic. MVVM scales better than MVC by moving presentation logic into testable view models.