Преимущества SwiftUI перед UIKit

Хорошо ли вы определяете разницу между декларативным и императивным программированием? Если коротко, то она задаётся вопросами как и что. И всё же многие путаются. Тогда скажем, что декларативный подход – это краткость и задание основных «тегов», а императивный – подробное описание достижения желаемого результата. Теперь мы вас «распутали»?


Далее будем говорить о преимуществах SwiftUI (декларативный фреймворк для создания пользовательских интерфейсов) перед UIKit (императивный управляемый событиями фреймворк для криэйта UIs).


Почему стоит забыть об UIKit


Про UIKit как средство создания пользовательских интерфейсов для платформы iOS нужно забыть. Честно. Потому что императивность предполагает обработку всех изменений состояния в процессе простого нажатия кнопки и загрузки представления, ну и т.д. Это большой недостаток в программировании.
Синхронизация UI с состоянием оного настолько сложна, что хочется плакать: вот только оно (состояние) изменилось, а уже требуется ВРУЧНУЮ! что–то сделать с представлениями и скоординировать его с сиюминутным стэйтом самого аппа.


SwiftUI – это «обёртка»?


«Обёртывает» ли SwiftUI UIKit? Сложно ответить однозначно. Данный декларативный фреймворк создан компанией Apple для разработки не одних только iOS–, но также и macOS–аппов (а ещё он распространяет свою силу влияния и на платформы tvOS и watchOS). Он позволяет девелоперу просто объявить, что конкретно тот желает достичь в процессе, а уже сам «свифт–ю–ай» сделает всё как нужно, ибо ему известны все способы визуализации пользовательского интерфейса, среди которых он непременно найдёт наилучший.
Здесь сам UI – функция его же состояния. Иными словами, как только состояние представления изменилось, для него будет пересчитано бади–проперти и сгенерировано новое вью.


Плюсы SwiftUI


Выпишем положительные стороны СвифтЮИ, из–за которых очень хочется работать с этим фреймворком.

  • Программный дизайн / дизайн на основе сторибордов здесь предоставлен одновременно.
  • Проблемы управления версиями при работе с UI ушли, так как код тут намного проще читается и «поддаётся», нежели в случае с XML–файлами.
  • API–интерфейсы со строковой типизацией остались, но в заметно меньшем количестве.
  • Вызов несуществующих функций больше не составляет трабл, так как UI проверяется компилятором Swift.
  • Присутствуют здоровские механизмы для ценителей реактивщины – с местными BindableObject и ObjectBinding, а также есть целый фреймворк Combine.
  • Можно рисовать.
  • Легко управлять темами.
Екатерина Константинова