스위프트 관찰 AsyncSequence를 통한 상태 변... 노트

스위프트 관찰 AsyncSequence를 통한 상태 변경 관찰

Swift 6.2는 Observable 타입의 상태 변경을 스트리밍하는 새로운 Observations 타입을 도입합니다. 이는 장면의 검색 쿼리 및 탐색 경로와 같은 애플리케이션 상태를 유지하는 데 유용합니다. 저자는 이전에 이 상태를 Codable 클래스인 SceneModel에서 관리했으며, 이를 JSON으로 인코딩하여 유지할 수 있었습니다.SceneModel은 루트 뷰의 @SceneStorage를 사용하여 저장 및 복원되었습니다. 그러나 상태 저장은 scenePhase를 모니터링하는 데 의존했는데, 이는 장면이 백그라운드로 전환되기 전에 종료될 수 있기 때문에 신뢰할 수 없었습니다. Swift 6.2 이전에는 @Published 속성을 가진 ObservableObject를 사용하여 Combine의 buffervalues를 활용해 상태 변경을 저장하기 위한 AsyncSequence를 생성할 수 있었습니다.iOS 26 및 Swift 6.2와 함께 Observations 타입은 Observable 타입에 대한 유사한 AsyncSequence를 제공합니다. 이를 통해 SceneModel의 JSON 표현과 같은 계산된 속성을 관찰할 수 있습니다. Observations 타입은 관찰될 값을 반환하는 클로저를 사용합니다.변경 사항은 트랜잭션적이어서, 관찰 가능한 속성에 대한 여러 동기식 업데이트가 단일 시퀀스 값으로 일괄 처리됩니다. 업데이트 추적은 관찰 가능한 속성의 willSet으로 시작하여 다음 일시 중단 지점에서 완료됩니다. 이를 통해 scenePhase에 의존하지 않고 장면 모델의 상태가 변경될 때마다 자동으로 저장할 수 있습니다. Observations의 AsyncSequence는 구독 시 관찰된 속성의 초기 값을 방출합니다.