SwiftUI. Essentials - WWDC24

SwiftUI는 선언형 UI 프레임워크다. Rich Feature Set, 다양한 기능과 기기 고유의 이점을 활용할 수 있는 풍부한 기능 집합 Less Code, 더 적은 코드 Incremental adoption, 필요한 순간에 적절하게 사용 가능. 전체 앱이 반드시 SwiftUI일 필요는 없다. SwiftUI Essentials SwiftUI는 선언형 UI 프레임워크이기 때문에 UIKit 처럼 UIView 객체가 계속 메모리에 상주해있고, 그 객체를 직접 변화시키는게 아니라, View를 보고 SwiftUI가 그리는 방식이다. 즉, View는 그냥 UI 요소를 정의하는 설계도이다. (Demistify SwiftUI 세션에서도 한 말이다!) ...

July 27, 2026

SwiftUI. Discover Observation in SwiftUI - WWDC23

SwiftUI의 Observation은 모델의 프로퍼티 변화를 추적하고, 그 변화에 맞춰 UI를 업데이트하는 기능이다. @Observable 매크로를 사용하면 별도의 ObservableObject, @Published, @ObservedObject 없이도 일반 Swift 타입에 가까운 형태로 관찰 가능한 모델을 만들 수 있다. 핵심은 간단하다. View가 읽은 프로퍼티가 바뀌면, 그 View가 다시 계산된다. 이 글에서는 Observation의 동작 방식, @State, @Environment, @Bindable을 언제 써야 하는지, 그리고 기존 ObservableObject 기반 코드를 @Observable로 옮기는 방법을 정리한다. Observation @Observable은 Swift 매크로다. 타입에 이 매크로를 붙이면 컴파일러가 해당 타입을 관찰할 수 있도록 코드를 확장한다. ...

July 24, 2026

SwiftUI. The Swiftui Cookbook for Navigation - WWDC22

The SwiftUI cookbook for navigation SwiftUI의 새로운 내비게이션 API를 발표한 WWDC 세션을 정리했다. 이 내비게이션 API는 각각의 NavigationLink가 관리하는 대신, 스택 전체의 상태를 데이터로 표현하고 직접 조작할 수 있게 만든다. 이 구조를 사용하면 버튼을 눌러 이동하는 기본적인 내비게이션뿐만 아니라, 딥 링크나 특정 화면으로 바로 이동하기, 루트 화면으로 돌아가기, 현재 내비게이션 상태 저장까지 같은 모델로 처리할 수 있다. New naviation API: 새로운 Data-driven 내비게이션 API Recipes for navigation: 탐색을 프로그래밍 방식으로 완전히 제어하기 Persistent state: 새로운 API를 이용하여 앱의 내비게이션 상태를 유지하기 i갑자기 프로그래밍 방식? SwiftUI는 처음부터 코드로 UI를 작성하는 프레임워크였기 때문에, 기존 NavigationView도 isActive나 selection을 이용해 화면을 프로그래밍 방식으로 전환할 수 있었다. ...

July 23, 2026

iOS. Demystify SwiftUI (3) - WWDC21

Dependencies: SwiftUI는 무엇이 바뀌었는지 어떻게 알까? 앞선 글에서는 SwiftUI가 View를 구분하는 방식인 Identity와, Identity가 유지되는 기간인 Lifetime을 정리했다. 이번에는 SwiftUI가 View를 업데이트하는 기준인 Dependencies를 살펴본다. 먼저 결론부터 말하면 SwiftUI의 업데이트 과정은 다음과 같다. Dependency 변경 ↓ 관련된 View 무효화 ↓ body 재평가 ↓ 새로운 View Value와 이전 Value 비교 ↓ 실제로 변경된 화면만 업데이트 Identity는 같은 View인지 판단하고, Lifetime은 상태를 유지하며, Dependency는 어떤 View를 다시 계산해야 하는지 결정한다. 이 세 가지를 함께 이해하면 단순히 API 사용법을 외우는 것보다 SwiftUI의 동작을 더 잘 예측할 수 있다. ...

July 22, 2026

SwiftUI. Demystify SwiftUI (2) - WWDC21

Lifetime 1편에서는 SwiftUI가 View를 구분하는 방식인 Identity를 정리했다. 이번에는 Identity가 유지되는 시간인 Lifetime과, 그 안에서 State가 어떻게 보존되는지 살펴본다. View Value는 계속 새로 만들어질 수 있지만, Identity가 유지되는 동안에는 같은 View의 Lifetime 안에 있다고 볼 수 있다. 그리고 State와 StateObject는 이 Lifetime에 연결되어 있기 때문에 Identity가 바뀌면 함께 교체된다. 고양이가 하루 동안 이곳저곳 움직이더라도 우리는 계속 같은 고양이라고 생각한다. 이처럼 Identity는 시간에 따라 달라지는 여러 값을 하나의 안정적인 존재로 연결한다. 시간의 흐름 속에서 연속성을 만들어 주는 셈이다. ...

July 21, 2026

SwiftUI. Demystify SwiftUI (1) - WWDC21

i시작하기 전에 Identity는 화면에 띄워지는 UI 요소들이 같은 요소인지, 다른 요소인지 구분하는 방식이다. 이 WWDC 세션에서 가장 중요한건, View 프로토콜을 채택하여 작성하는 View Structure가 실제 화면에 보이는 요소가 아니라 그냥 그 요소의 설계도일 뿐이라는 것이다. (UIKit과 많이 다르다) Swift에서 ‘Value Type은 Immutablity를 가진다.’ 이라는 말이 가장 크게 체감되는 부분이기도 한데, SwiftUI에서 코드로 작성한 View도 Value Type이고 당연히 Immutable하다. 따라서 한 번 생성된 값은 변하지 않아야 한다. 만약 내부의 값이 변해야 하면 UIKit의 View Controller 처럼 은근슬쩍 내부 프로퍼티만 바꾸지 않고, Value 전체를 새로 만든다. ...

July 20, 2026