[SwiftUI/TCA] TCA 기초 (1)

·2024년 10월 6일

SwiftUI 상태 관리부터 테스트까지 iOS 개발자를 위한 TCA 1.0

를 참고해서 기초 공부 중이다 ...! 여기에 point free 인강까지 들을 예정,,, (인데 언제하지)

TCA란? 현재 상태가 어떤지 파악하고, 이를 쉽게 관리하기 위해 고안된 단방향 아키텍처이다.

MVVM 작동 방식

MVVM 작동 방식

MVVM 패턴 또한 단방향 아키텍처로써, ViewViewModel 의 상태를 관찰하고 해당 상태에 따라 업데이트된다. View는 자기 자신을 렌더링하고 유지하기 위해 ViewModel에게 자신의 상태와 로직을 전달한다. → View 는 그 상태와 로직이 변하는 것을 알지 못한다.

그러나, SwiftUI와 같은 양방향 데이터 바인딩을 지원하는 프레임워크를 사용하면 ViewViewModel에서의 요청을 받아와서 추가적인 작업을 해야 하는 경우가 발생한다. 이를 방지하기 위해 @Published 속성들에 대한 엄격한 캡슐화를 지향하는 경우도 있으나, 이에 대한 가이드라인은 없다.

이와 달리 TCA는 상태 변화에 대한 일관적인 가이드라인을 컴파일 단계에서부터 확보한다. TCA를 적용한다면 상태 변화를 일으키는 Action , Action에 대한 View에서의 .send()를 거쳐야 한다.

TCA 작동 방식

TCA 작동 방식

TCA는 Single Source Of Truth(단일 진실 공급원)을 따르는 단방향 구조를 선택했다.

Single Source Of Truth란? 애플리케이션의 상태나 데이터에 대한 유일한 출처를 가지는 것.

→ 모든 상태 변경의 출처가 명확. 그 변경이 예측 및 추적 가능함.

변동을 추적하고 의도하지 않은 변경에서 지켜내야 할 상태를 State 라고 한다. 사용자가 View를 통해 어떠한 작업이나 알림, 이벤트를 트리거하면 연결된 ActionReducer 내에 구현된 함수로 State 를 변화시키는 Effect 반환. 작업이 간단하다면 바로 상태를 변화시키고, 네트워크 통신과 같은 비동기적인 작업이 진행하기도 한다.

profile
SOOP

0개의 댓글