피드로 돌아가기
iOS ReactorKit 톺아보기
올리브영 테크블로그올리브영 테크블로그
Mobile

iOS ReactorKit 톺아보기

올리브영 모바일앱이 ReactorKit을 도입해 ViewController의 비즈니스 로직을 분리하고 상태 관리 구조를 단순화

2023년 5월 20일10intermediate

Context

RxSwift 단독 사용 시 상태값 관리에 어려움이 있었고, UI 로직과 비즈니스 로직이 ViewController에 혼재되어 코드 복잡도가 증가했다.

Technical Solution

  • Reactor 패턴 도입: Action → Mutation → State의 단방향 흐름으로 상태 변화를 명시적으로 관리
  • View와 Reactor 분리: View는 Action만 방출, Reactor는 State만 방출하도록 책임 분담
  • 전체 앱 리팩토링이 아닌 필요 부분만 선택적 적용: 기존 코드와 공존 가능
  • mutate() 메서드로 비동기 작업 처리: Action 스트림을 Mutation 스트림으로 변환
  • reduce() 메서드로 상태 갱신: 이전 State와 Mutation을 결합해 새로운 State 생성
  • DisposeBag과 bind(reactor:)를 통한 메모리 관리: [weak self] 및 withUnretained Operator로 순환 참조 방지

Key Takeaway

RxSwift 기반 프로젝트에서 명시적인 상태 관리 구조(Action-Mutation-State)를 도입하면 코드 응집도를 높이고 테스트 용이성을 확보하면서도 점진적 도입이 가능하다.


RxSwift를 사용하는 iOS 프로젝트에서 ViewController의 상태 관리 복잡도가 증가할 때, ReactorKit의 Action-Mutation-State 패턴을 적용하면 UI 로직과 비즈니스 로직을 명확히 분리하고 유닛 테스트를 Reactor 레벨에서 의존성 없이 작성할 수 있다.

원문 읽기