2024.02 - 2024.03 (5주)
- SeSAC x 맛있는코드 부트캠프 토이 프로젝트 (2인 1조)
- Repository: https://github.com/earths-voluble/ios-box-office
- 영화진흥위원회
open API
를 사용해 일별 박스 오피스 및 영화 상세 정보를 조회하는 앱 Clean Architecture
의 계층 구조 아이디어와MVVM + Input / Output
패턴을 적용한 설계- 네트워킹 등 비동기 상황에 Swift Concurrecy(
async-await
) 적용한 이벤트 흐름 구현
- UIKit
- Clean Architecture
- Swift Concurrency (async-await)
View - ViewController - UseCase - Repository - Network
의 계층으로 구성- async-await 도입으로 호출 후 결과를
리턴
받을 수 있도록 구현 - ViewModel이 결과를 리턴받으면 delegte 형태로 view controller(BoxOfficeOutput)를 참조해서 호출
- 문제와 원인
- 이전 프로젝트에서 네트워킹 등 비동기 코드를 구현할 때 GCD 등 call back closure를 사용하는 방식의 문제점을 경험
- 대안 비교와 도입
- 비동기 호출의 결과를 리턴 받아 처리할 수 있는 단순한 처리 흐름을 구현하기 위해 swift concurrency 도입 결정
- 비동기 코드를 트리거 하는 ViewModel 부터 실제 API 호출 계층까지의 호출 체인에 도입
- 평가
- await으로 호출한 코드에 대한 결과를 대기 후 리턴받을 수 있어 단방향으로 참조할 수 있어 비교적 단순한 구조를 구성할 수 있었음
스텝 | PR |
---|---|
Step 1 | tasty-code#26 |
Step 2 | tasty-code#41 |
Step 3 | tasty-code#47 |