Хорошо ли вы определяете разницу между декларативным и императивным программированием? Если коротко, то она задаётся вопросами как и что. И всё же многие путаются. Тогда скажем, что декларативный подход – это краткость и задание основных «тегов», а императивный – подробное описание достижения желаемого результата. Теперь мы вас «распутали»?
Далее будем говорить о преимуществах SwiftUI (декларативный фреймворк для создания пользовательских интерфейсов) перед UIKit (императивный управляемый событиями фреймворк для криэйта UIs).
Почему стоит забыть об UIKit
Про UIKit как средство создания пользовательских интерфейсов для платформы iOS нужно забыть. Честно. Потому что императивность предполагает обработку всех изменений состояния в процессе простого нажатия кнопки и загрузки представления, ну и т.д. Это большой недостаток в программировании.
Синхронизация UI с состоянием оного настолько сложна, что хочется плакать: вот только оно (состояние) изменилось, а уже требуется ВРУЧНУЮ! что–то сделать с представлениями и скоординировать его с сиюминутным стэйтом самого аппа.
SwiftUI – это «обёртка»?
«Обёртывает» ли SwiftUI UIKit? Сложно ответить однозначно. Данный декларативный фреймворк создан компанией Apple для разработки не одних только iOS–, но также и macOS–аппов (а ещё он распространяет свою силу влияния и на платформы tvOS и watchOS). Он позволяет девелоперу просто объявить, что конкретно тот желает достичь в процессе, а уже сам «свифт–ю–ай» сделает всё как нужно, ибо ему известны все способы визуализации пользовательского интерфейса, среди которых он непременно найдёт наилучший.
Здесь сам UI – функция его же состояния. Иными словами, как только состояние представления изменилось, для него будет пересчитано бади–проперти и сгенерировано новое вью.
Плюсы SwiftUI
Выпишем положительные стороны СвифтЮИ, из–за которых очень хочется работать с этим фреймворком.