MVI 패턴? 익숙하진 않지만 공부 겸 정리해봄

MVI 패턴에 익숙하진 않지만, 공부를 목적으로 MVI 패턴에 대해 정리해봤다.

우선, MVI의 핵심은 단방향 아키텍처다.

자세한 개념 설명은 다른 좋은 블로그들이 많으니 생략하고, 이 글에선 내가 MVI 패턴을 SwiftUI와 함께 어떻게 구성했는지를 중점적으로 다뤄보려 한다. 특히 ObservableObject와 Swift 5.9의 @Observable 매크로와의 관계를 중심으로.


내가 정의한 MVI 구성

다음은 내가 MVI 패턴을 Swift의 @Observable 매크로를 활용해 구성한 방식이다.

예시로 View의 이름을 MyView라고 하면, 구성은 아래와 같다:

각 컴포넌트의 역할

관계 구조

  1. View는 MyViewIntentProtocolMyViewStateDataProtocol을 소유
  2. Intent는 MyViewStateProtocolweak으로 소유
  3. State는 별도 소유 관계 없음 (@Observable로 상태 변경 감지)

구현 예시