Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Observable
- Clean Code
- Human interface guide
- Xcode
- uitableview
- UICollectionView
- 스위프트
- ribs
- swiftUI
- combine
- swift documentation
- 리펙터링
- map
- ios
- rxswift
- HIG
- Refactoring
- clean architecture
- UITextView
- tableView
- uiscrollview
- collectionview
- Protocol
- SWIFT
- RxCocoa
- 리펙토링
- 클린 코드
- 리팩토링
- 애니메이션
- MVVM
Archives
- Today
- Total
김종권의 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:42AppDelegate에서 첫 화면으로
- AppDelegate는 앱 첫 시작화면으로 이동하는 AppFlowCoordinator를 소유
- Coordinator를 통해 첫 시작화면으로 이동
- Coordinator에서는 AppFlowDIContainer를 통해 이동하려는 화면에 해당하는 DIContainer 생성 > 이동하려는 화면의 Coordinator를 획득 > 이동하려는 화면의 coordinator에 정의되어 있는 start()함수를 통해 화면 전환
Coordinator 사용 방법
- Coordinator를 사용하는 이유: ViewModel간 의존관계를 Coordinator로 끊은 상태 > ViewModel이 서로 의존하고 있지 않으므로 특정 ViewModel을 수정하면 Coordinator만 변경하면 되므로 상대적으로 자유롭게 ViewModel을 갈아 끼우기 쉬운 구조
- Coordinator개념 참고: https://ios-development.tistory.com/438?category=979367
- AViewModel에서 B, C, D로 이동되는 경우: ACoordinator에 B, C, D로 이동되는 코드 작성 (AViewModelAction 델리게이트를 통해 이동)
- A화면에서 B, C, D화면으로 이동하고 싶은 경우: AViewModel에서 특정 Action에 따라 이동되게끔 해야 하므로, AViewModel에 AViewModelAction형태의 struct 정의 > AViewModel에서는 delegate로 선언하고 구현은 ACoordinator에서 구현
DI 사용 방법
- A에서 BCoordinator를 생성하고 싶은 경우 AContainer에서 BContainer를 생성하는 코드 존재 (BCoordinator는 BContainer에서 생성하는 코드를 사용)
- AViewModel에서 필요한 B화면 이동, UseCase, Repository를 AContainer에서 구현체 주입
- 주의사항: A, B, C모두 서로 뎁스가 같은 경우, 하나를 묶어서 하나의 DIContainer로 사용
ex) MoviesListVC, MoviesDetailsVC, MoviesQueriesSuggestionsListVC 세 곳은 모두 SearchCoordinator에서 사용되는, 뎁스가 같으므로 MoviesSceneDIContainer에서 한번에 관리
Presentation을 중심으로 Todo 앱 구현하기
- 가장 먼저 생성: 원의 안쪽 먼저 생성: Entity > UseCase > ViewModel > View > N/W, DB
- Entity 생성 - Todo
- 개발에서는 UseCase보다 ViewModel를 먼저 생성
- ViewModel을 생성 순서: Action 정의 > Input 프로토콜 정의 > Ouput 프로토콜 정의
- ViewModel에서 Entity를 그대로 사용하지 않고, TodoListItemViewModel으로 가공하여 사용
진행중...
'Architecture (swift) > MVVM (개념)' 카테고리의 다른 글
Comments