관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] Clean swift (VIP) 패턴 (기본 개념) 본문

Architecture (swift)

[iOS - swift] Clean swift (VIP) 패턴 (기본 개념)

jake-kim 2021. 2. 13. 20:48

Clean swift

  • MVVM의 단점 보완: 모든 부분에서 Reactiveness가 필요하지 않음
  • VIPER의 단점 보완: 사용자의 액션, 모델 업데이트, 라우팅이 presenter에 몰려있음(massive)
    - Presenter: Interactor에서 발생되고 비지니스 로직과 관련있지만 UIkit과 관련없는 UI를 가짐

VIPER
VIPER에서 massive Presenter 문제 (view, interactor, wireFrame)

Clean Swift의 VIP 주기

  • VIP(View Controller, Interactor, Presenter)
  • VIPER의 제어 흐름 문제 해결(양방향으로 로직이 순환해서 순환참조에 의한 메모리 누수): 단방향 제어 흐름
  • MVVM의 reactiveness 문제 해결: VIP cycle로 인해 interactor에 있는 클로저 기반 비동기 메소드들이 주기적으로 업데이트를 제공할 수 있기 때문

  • data flow
    1) view 이벤트가 시작 -> Interactor 메소드를 실행하여 비즈니스로직 실행
    2) Interactor에서 비즈니스로직을 처리 -> 결과를 Presenter에게 전송
    3) Presenter에서 Interactor에서 받은 결과에 대한 UI처리를 View에 가시
    * VIPER와는 다르게 액션에 대한 비즈니스로직을 Presenter를 통하지 않고 바로 Interactror로 요청해서 변화를 줌

Router와 Worker

  • Router: navigation
  • Worker: 복잡한 비즈니스 로직은 Worker에서 수행하도록

 

* 참고:

clean-swift.com/handbook/

zonneveld.dev/the-clean-swift-architecture-explained/

github.com/Clean-Swift/CleanStore

basememara.com/swift-clean-architecture/

 

 

 

Comments