SwiftUI는 WWDC 2019 때 "The Shortest Path to a Great App." 그리고 "Less Code. Better Code. Everywhere."와 같은 슬로건과 함께 발표되었다.
- Swift 언어의 모든 특성을 최대한 활용할 목적으로, Swift를 기반으로 처음부터 새롭게 구성한 프레임워크이다. Swift의 장점을 최대한 살리면서 AppKit, UIKit처럼 구분하지 않고 유저 인터페이스 영역까지 SwiftUI 하나로 모든 플랫폼에서 사용할 수 있도록 만들어 졌다.
- 선언형 프로그래밍은 일련의 명령을 어떻게 수행하느냐를 다루는 대신, 프로그램이 달성해야 하는 목적 그 자체를 설명하는 것으로 부수 효과와 프로그램의 제어 흐름에 따른 영향을 최대한 줄이거나 없애는 것을 목표로 한다.
- 명령형 프로그래밍 처럼 매번 변화하는 상태에 따라 수행되는 흐름의 여러 복잡성을 떠안는 대신 불변(Immutable)값을 사용하는 것으로 로직을 단순화시켜 준다.
- 통상 가장 흔하게 작성해야 했던, 화면에 뷰를 배치할 오토레이아웃 코드들이 제거되고, 최소한의 설명만으로 적용할 수 있다는 점에서 특히 그 차이를 크게 체감할 수 있다. 애니메이션 화면 전환과 관련된 기능들 역시 자동화로 인해 매우 단순한 코드만으로 원하는 동작을 이끌어 낼 수 있게 되었다.
- SwiftUI의 API는 뷰의 조합과 분리를 간단히 할 수 있게 제공해, 배우기 쉬우면서도 반복적인 개발 작업을 더 빠르게 할 수 있게 설계되었다.
- 즉, 큰 뷰를 하나의 기능을 가진 작은 뷰들로 잘게 나누거나 각각의 뷰를 조합해 원하는 뷰를 쉽게 만들어 낼 수 있게 지원한다.
- 복잡한 뷰를 설계하고 수정하거나 특정 뷰를 재사용하는 일도 더 쉽게 할 수 있게 되었다.
- 또, 뷰 프로토콜에 다양한 공용 수식어를 제공해, 이를 준수하는 모든 객체에 공통적인 UI나 기능을 적용하는 일도 간단히 수행할 수 있게 되었다.
- SwiftUI에서는 데이터가 변경되는 즉시 UI도 자동으로 갱신된다. 뷰의 특정 상태를 저장할 State나 모델 객체의 변화를 관찰할 ObservableObject 같은 원천 자료(Source of Truth)의 변화를 반영해 뷰에 반영한다.
- 그 때문에 더는 데이터와 UI의 동기화를 신경 쓰지 않아도 항상 일관성 있는 결과를 얻을 수 있고, 버그가 발생할 여지도 훨씬 줄어들게 되었다.
- 스윗한 SwiftUI
- [[15. 명령형 vs 선언형 (x)]]
- #IOS/SwiftUI