iOS κΈ°λ³Έ μ± μκ³μ μλ, μ€ν±μμΉ, νμ΄λ¨Έ νμ ν΄λ‘ ν μ±
- Swift
- UIKit
- RxSwift
- SnapKit
- CoreData
- MVVM (Input-Output)
- Clean Architecture
- DIContainer
- Git / GitHub
- Figma
- Notion
- Slack
- β μλ κ·Έλ£Ήν
- β μλ μμ ―
π¦clock
βββ App # μ± μ§μ
μ (AppDelegate, SceneDelegate λ±)
β
βββ Data # λ°μ΄ν° μμ€μμ ν΅μ λ΄λΉ (CoreData λ±)
β βββ Interface # CoreData Storage νλ‘ν μ½ μ μ
β β βββ Persistence
β βββ Persistence # CoreData κ΄λ ¨ λͺ¨λΈ λ° μ€μ ꡬν
β β βββ Model
β β βββ Persistence # CoreData Storage ꡬν체
β βββ Repository # Repository ꡬν체
β βββ Error # Data κ³μΈ΅μμ μ¬μ©νλ μλ¬ μ μ
β
βββ Domain # μ±μ ν΅μ¬ λΉμ¦λμ€ λ‘μ§μ λ΄λΉ
β βββ Interface
β β βββ Repository # Repository νλ‘ν μ½ μ μ
β β βββ UseCase # UseCase μΈν°νμ΄μ€ μ μ
β βββ UseCase # ꡬ체μ μΈ λΉμ¦λμ€ λ‘μ§ κ΅¬ν
β βββ Model # λλ©μΈ λͺ¨λΈ μ μ
β βββ Error # λλ©μΈ κ³μΈ΅μμ μ¬μ©νλ μλ¬ μ μ
β
βββ Presentation # UIμ μ¬μ©μ μνΈμμ©μ λ΄λΉ (View, ViewModel λ±)
β βββ Model # ViewModelμμ μ¬μ©νλ UI μ μ© λͺ¨λΈ
β β βββ TimerDisplay.swift
β βββ Scene # νλ©΄ λ¨μλ‘ λΆλ¦¬λ κΈ°λ₯λ€
β β βββ Stopwatch # μ€ν±μμΉ νλ©΄
β β βββ ViewController
β β β βββ Subview # μλΈ μ»΄ν¬λνΈ λ·°
β β βββ ViewModel
β βββ Component # μ¬μ¬μ© κ°λ₯ν UI μ»΄ν¬λνΈ
β βββ Factory # UI μ»΄ν¬λνΈ κ΄λ ¨ λ©μλ ν©ν 리
β βββ Extension # UIKit, Foundation λ±μ νμ₯ λ©μλ
β
βββ Resource # μμ
, ν°νΈ, λ‘컬λΌμ΄μ¦ 리μμ€ λ±- Actorλ₯Ό μ¬μ©ν Data Race ν΄κ²°
- viewContextκ° μλ backgroundContext μ¬μ©
- async/await + withCheckedContinuationμΌλ‘ Swift Concurrency ꡬν
- CoreDataEntityμ DomainEntity κ° λ§€ν μ± μμ Repositoryκ° λ΄λΉ
- Storageλ DomainEntity νμ λͺ¨λ₯΄κ² νκΈ°
- Repositoryλ CoreData λ‘μ§μ μ§μ μ κ·Όνμ§ μκΈ°
| Before (κΈ°μ‘΄ ꡬν) | After (κ°μ λ ꡬν) |
|---|---|
![]() |
![]() |
- AppGroup μ¬μ©
- Sandbox μΈλΆμ λ°μ΄ν° μ μ₯
- μ€ν±μμΉ νμ΄λ¨Έ μμ μ€ μ± μ’ λ£ μμλ νμ΄λ¨Έκ° νλ₯΄λλ‘ μ μ§μν€κΈ°
- μ€ν±μμΉ λ© UITableView Invert νκΈ°
- CoreDataμ UndoManagerλ₯Ό νμ©ν΄ Undo κΈ°λ₯ ꡬννκΈ°
- LiveActivityλ₯Ό μ΄μ©ν΄ LockScreenμμ μ€ν±μμΉ μ μ΄νκΈ°





