왜 TCA는 @Environment를 안 쓰고 자체적으로 만들었을까?

치킨치·2025년 4월 14일
0
  • @Environment는 View 계층을 기준으로 전파되는 시스템
  • 하지만 TCA의 핵심은 ReducerStateAction의 독립성 유지
  • ReducerView와는 무관하게 동작해야 하므로, 자체 의존성 관리 시스템이 필요했음
  • 그래서 DependencyValues라는 “Reducer 전용의 환경 값 컨테이너”를 만들었고, 그걸 꺼내 쓰는 래퍼가 @Dependency

✅ 실제 내부 구조는 이렇다

@Dependency(\.uuid) var uuid
  • 이건 DependencyValues라는 전역 컨텍스트에서 uuid 값을 꺼내오는 sugar syntax
  • 이 값은 Reducer가 실행될 때 EffectContext를 통해 주입됨
  • 실제로는 context.dependencies.uuid()가 호출됨

✅ 결론 요약

  • @Dependency는 TCA에서 만든, @Environment와 유사한 의존성 주입 시스템
  • Reducer에서 외부 기능(API, UUID, 날짜 등)을 테스트 가능하게 다룰 수 있게 설계됨
  • SwiftUI의 View 환경 전파와 달리, TCA는 Reducer의 독립성과 순수성을 유지하기 위한 구조로 만들어졌음

profile
풀스텍이었던 iOS개발자

0개의 댓글