Использует декларативный подход. Пишем что хотим получить какую-нибудь схему, а движок по возможности делает или не делает это.
Главной проблемой является то, что во многих компонентах, в частности в TabView все вью создаются даже если на них нет перехода. Это решается созданием обертки - LazyView.
SwiftUI использует State (Flux,Redux, MobX). Поток данных в одном направлении. От пользователя к UI.
Паттерн Декоратор.
-
@ObservableObject - каждый раз пересоздается когда вью обновляется.
-
@StateObject - живет дольше чем вью которое им владеет. Из-за этого могут быть баги.
-
@EnvironmentObject нельзя делать присвоение (как в @Binding)
-
Хорошая практика написание отдельных компонентов. Тем самым уменьшается работа рендера, движка SwiftUI.
-
Избегать вложенных NavigationView.