ํด๋น iOS ํ๋ก์ ํธ๋ Clean Layered Architecture์ MVVM ๋ฐฉ์์ผ๋ก ๊ตฌํ๋์ด์๋ค. ("Movie"๋ผ๋ ์์ดํ ์ด๋ฆ์ผ๋ก ํด๋น ํ ํ๋ฆฟ์ด ์ฌ์ฉ๋์๋ค.) ์์ธํ ์ ๋ณด๋ ์ค๊ฐ ํฌ์คํธ์์ ํ์ธํด๋ณผ ์ ์๋ค: Medium Post about Clean Architecture + MVVM.
- ๋๋ฉ์ธ ๊ณ์ธต = ๊ฐ์ฒด (Entities) + ์ ์ค์ผ์ด์ค (Use Cases) + ๋ ํฌ์งํ ๋ฆฌ ์ธํฐํ์ด์ค ๋ถ๋ถ (Repositories Interfaces)
- ๋ฐ์ดํฐ ๋ ํฌ์งํ ๋ฆฌ ๊ณ์ธต: ๋ ํฌ์งํ ๋ฆฌ ๊ตฌํ ๋ถ๋ถ (Repositories Implementations) + API (๋คํธ์ํฌ) + ์ง์๋๋ DB
- ํ๋ ์ ํ ์ด์ ๊ณ์ธต(MVVM): ๋ทฐ ๋ชจ๋ธ (View Models) + ๋ทฐ (Views)
์ฃผ์: ๋๋ฉ์ธ ๊ณ์ธต์ ๋ค๋ฅธ ๊ณ์ธต์ ์์๋ค์ ํฌํจํ ์ ์๋ค. (์์: Presentation - UIKit or SwiftUI or ๋ฐ์ดํฐ ๊ณ์ธต - Codable๋ก ๋งคํ)
- Clean Architecture https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html
- Advanced iOS App Architecture https://www.raywenderlich.com/8477-introducing-advanced-ios-app-architecture
- MVVM
- Data Binding using Observable without 3rd party libraries
- Dependency Injection
- Flow Coordinator
- Data Transfer Object (DTO)
- Response Data Caching
- ViewController Lifecycle Behavior
- SwiftUI and UIKit view implementations by reusing same ViewModel (at least Xcode 11 required)
- Error handling examples: in ViewModel, in Networking
- CI Pipeline (Travis CI + Fastlane)
- Unit Tests with Quick and Nimble, and View Unit tests with iOSSnapshotTestCase
- Unit Tests for Use Cases(Domain Layer), ViewModels(Presentation Layer), NetworkService(Infrastructure Layer)
- UI test with XCUITests
- Size Classes and UIStackView in Detail view
- Dark Mode
- SwiftUI example, demostration that presentation layer does not change, only UI (at least Xcode 11 required)
- Pagination
๋ง์ฝ ๋ ํฌ์งํ ๋ฆฌ์ ์๋ ํด๋น ์์์์ ๋คํธ์ํน์ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด, ๋ฐ๋ก๊ฐ๊ธฐ ๋ฅผ ์ฐธ๊ณ ํ๋ฉด ๋๋ค.
- Xcode 11.2.1๋ฒ์ ์ด์, swift 5.0 ๋ฒ์ ์ด์
์ํ๋ฅผ ์ฐพ๊ธฐ ์ํด์ ์์น๋ฐ์ ์ด๋ฆ์ ์ ๊ณ ์ฐพ๊ธฐ ๋ฒํผ์ ๋๋ฅธ๋ค.
์ฌ๊ธฐ์๋ ์ํ ์์ฒญ๊ณผ poster image ์์ฒญ์ ๋๊ฐ์ ๋คํธ์ํฌ๊ฐ ํธ์ถ๋๋ค. ์ฑ๊ณต๋ ๋ชจ๋ ๊ฒ์ ์ฟผ๋ฆฌ๋ ์๊ตฌ์ ์ผ๋ก ๋ณด์กด๋๋ค.