관리 메뉴

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

[iOS] 5. Clean Architecture + MVVM 개념 확실하게 이해하기 (DI, Coordinator, Presentation layer) 본문

Architecture (swift)/MVVM (개념)

[iOS] 5. Clean Architecture + MVVM 개념 확실하게 이해하기 (DI, Coordinator, Presentation layer)

jake-kim 2021. 8. 19. 01:42

AppDelegate에서 첫 화면으로

  • AppDelegate는 앱 첫 시작화면으로 이동하는 AppFlowCoordinator를 소유

  • Coordinator를 통해 첫 시작화면으로 이동

  • Coordinator에서는 AppFlowDIContainer를 통해 이동하려는 화면에 해당하는 DIContainer 생성 > 이동하려는 화면의 Coordinator를 획득 > 이동하려는 화면의 coordinator에 정의되어 있는 start()함수를 통해 화면 전환

Coordinator 사용 방법

MoviesListViewModel에서 특정 Action에 따라 이동되는 화면은 MoviesListCoordinator에서 델리게이트

DI 사용 방법

  • A에서 BCoordinator를 생성하고 싶은 경우 AContainer에서 BContainer를 생성하는 코드 존재 (BCoordinator는 BContainer에서 생성하는 코드를 사용)
  • AViewModel에서 필요한 B화면 이동, UseCase, Repository를 AContainer에서 구현체 주입
  • 주의사항: A, B, C모두 서로 뎁스가 같은 경우, 하나를 묶어서 하나의 DIContainer로 사용

ex) MoviesListVC, MoviesDetailsVC, MoviesQueriesSuggestionsListVC 세 곳은 모두 SearchCoordinator에서 사용되는, 뎁스가 같으므로 MoviesSceneDIContainer에서 한번에 관리

BCoordinator에서 사용되는 dependencies관련 구현체는 AContainer에 존재


Presentation을 중심으로 Todo 앱 구현하기

  • 가장 먼저 생성: 원의 안쪽 먼저 생성: Entity > UseCase > ViewModel > View > N/W, DB

  • Entity 생성 - Todo

  • 개발에서는 UseCase보다 ViewModel를 먼저 생성
  • ViewModel을 생성 순서: Action 정의 > Input 프로토콜 정의 > Ouput 프로토콜 정의
  • ViewModel에서 Entity를 그대로 사용하지 않고, TodoListItemViewModel으로 가공하여 사용

진행중...

Comments