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