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

Combine. Combine in Practice - WWDC19

A unified, declarative API for processing values over time Combine에서는 값이 시간의 흐름에 따라 전달되는 과정을 Publisher로 표현하고, 여러 연산자를 연결해 데이터가 변환되는 흐름을 선언적으로 작성한다. 아래 예제에서는 Notification으로 전달된 Data를 MagicTrick으로 디코딩한다. let trickNamePublisher = NotificationCenter.default.publisher(for: .newTrickDownloaded) .map { notification in return notification.userInfo?["data"] as! Data } // Output: Data, Failure: Never .tryMap { data in let decoder = JSONDecoder() try decoder.decode(MagicTrick.self, from: data) } // Output: MagicTrick, Failure: Error decode 연산자를 사용하면 위 변환을 다음과 같이 줄여서 작성할 수 있다. let trickNamePublisher = NotificationCenter.default.publisher(for: .newTrickDownloaded) .map { notification in return notification.userInfo?["data"] as! Data } // Output: Data, Failure: Never .decode(MagicTrick.self, JSONDecoder()) // Output: MagicTrick, Failure: Error Error Handling 모든 Publisher는 자신이 발생시킬 수 있는 실패의 종류를 명확하게 정의한다. 실패가 발생하지 않거나 이미 처리된 경우에는 Never를 Failure 타입으로 사용한다. Combine은 실패를 감지하고 복구할 수 있는 다양한 연산자를 제공한다. Combine의 Publisher는 전달하는 값의 타입인 Output과 실패할 때 전달하는 오류의 타입인 Failure를 함께 가진다. 두 타입이 연산자를 거치며 어떻게 바뀌는지 확인하면 데이터 흐름과 오류 흐름을 함께 추적할 수 있다. ...

March 18, 2024

Combine. Introducing Combine - WWDC19

Combine Customize handling of asynchronous events by combining event-processing operators. 결합된 이벤트 처리 연산자를 이용하여 비동기 이벤트 처리를 커스터마이즈 하는 방법 Combine은 데이터 흐름을 간편하게 처리하고 비동기 이벤트를 관리하기 위한 프레임워크다. 다양한 소스에서 발생하는 이벤트를 같은 방식으로 다루고, 이벤트 사이의 상호작용을 연산자로 조합할 수 있다. 특징 Generic: 제네릭을 사용해 다양한 타입의 데이터 흐름을 표현한다. Type safe: Publisher의 출력 타입과 실패 타입을 컴파일 타임에 확인한다. Composition first: 작은 Publisher와 연산자를 조합해 더 큰 흐름을 만든다. Request driven: Subscriber가 필요한 만큼의 값을 요청하는 방식으로 흐름을 제어한다. 핵심 개념 Publisher 값과 에러가 어떻게 생성되는지를 정의한다. ...

March 17, 2024