State Management
간단한 값 타입들로 어플리케이션의 상태를 관리
화면에서 일어나는 변화를 다른 화면에서 즉시 관찰하기 위한 화면 간 상태 공유
Composition
큰 기능을 여러 개의 독립된 작은 모듈로 분리
쪼개진 모듈을 쉽게 재결합해 기능 구성
Side Effects
앱의 특정 부분이 테스트 가능하며 이해하기 쉽게 외부와 소통
Testing
아키텍처 내부 기능 테스트 뿐만 아니라 통합 테스트 가능
사이드 이펙트가 앱에 어떤 영향을 끼치는 지, 비즈니스 로직이 기대대로 잘 작동하는지 보장할 수 있는 end-to-end 테스트 가능
Ergonomics
위의 특징을 간단한 API로 실현
State: 로직을 수행하고 UI를 그리기 위해 필요한 데이터 타입
Action: 사용자 행동, 알림 등 앱에서 발생할 수 있는 모든 타입
Reducer: 주어진 Action으로 State를 업데이트 하기 위해 구현된 함수
API 요청과 같은 실행해야 하는 모든 결과를 반환
Store: 기능을 실제로 실행하는 공간
Reducer와 Effect를 실행하기 위해 모든 사용자 행동은 store로 전송
State변화를 관찰하여 UI 업데이트
Combine 프레임워크를 dependency로 갖고 있기 때문에 최소 iOS 13, macOS 10.15, Mac Catalyst 13, tvOS 13 그리고 watchOS 6 이상 필요
만약 더 이전 OS를 지원해야 하는 경우는 ReactiveSwift 버전이나 RxSwift 사용
▼ 출처
https://github.com/pointfreeco/swift-composable-architecture
https://medium.com/@Jager-yoo/swiftui-the-composable-architecture-tca-%EC%9E%85%EB%AC%B8-95b69b8c6c16