λμμΈν¨ν΄ μ€ μ± κ°λ°μ μ μ©λλ MVC(Model-View-Controller) ν¨ν΄μ λν΄ μ 리ν΄λ³΄μ!
1μ₯μμ μμ μ¬μ μ±μ λ§λ€λ©΄μ μλμ λ΄μ©λ€μ νμ΅νμ΅λλ€.
- μμ (Asset) - μ± μμ΄μ½, μ΄λ―Έμ§ νμΌ, λ°μ΄ν° νμΌμ κ΄λ¦¬, μ± μ€νμ νμΌμ μ½κ² μ κ·Όν μ μλλ‘ λμμ€λ€.
- μ± μλ(App thinning)κ³Ό μ± μ¬λΌμ΄μ±(App slicing) - λ€μν λλ°μ΄μ€μμ λΉ λ₯΄κ² λ€μ΄λ‘λν μ μλλ‘ νλ μ΅μ ν κΈ°μ
- Cocoa Touch, UIKit, Foundation - iOS μ± κ°λ°μ νμν νλ μμν¬
- Autolayout μ μ μ©νλ©° UIλ₯Ό κ°λ°νλ λ² - μΈν°νμ΄μ€ λΉλ vs μ½λλ‘ μμ±
- iOSμ View μ²΄κ³ - λ·° κ³μΈ΅, λ·°μ μ’ν, νλ μ vs λ°μ΄λ, λ·° κ³μΈ΅ λλ²κΉ ν΄
- λμμΈ ν¨ν΄κ³Ό MVC ν¨ν΄ - μ±κΈν΄ ν¨ν΄κ³Ό μ±κ°λ°μμμ MVC ν¨ν΄μ μ€μ μ μΌλ‘
- AVAudioPlayer, Timer - μμ νμΌμ μ¬μνκΈ° μν AVAudioPlayer, μκ°μ΄λ₯Ό μ¬κΈ° μν Timer
π‘ MVC ν¨ν΄
MVC ν¨ν΄μ iOS μ± κ°λ°μ μ μ©λλ λμμΈ ν¨ν΄μΌλ‘ Model, View, Controller λ‘ κ΅¬λΆνμ¬ κ°λ°νλ κ²μ΄λ€. κ°λ¨νκ², Model μ λ°μ΄ν°, View λ μ¬μ©μμκ² λ³΄μ¬μ§λ νλ©΄, Controller λ View μ Model μ κ΄λ¦¬νλ μ€μ¬μμ΄λ€. μ ν리μΌμ΄μ κ°μ²΄λ€μ μμ±ν λ, κ°κ°μ μν μ λͺ νν μ΄ν΄νκ³ ν μΌμ μ μ νκ² κ΅¬λΆν΄ Model, View, Controller μ€ νλλ‘ ν λΉν΄μΌνλ€. κ·ΈλμΌλ§ λ·°μ μ¬μ¬μ©μ±μ λμ΄κ³ μ¬λ°λ₯Έ λ°μ΄ν° νλ¦μ λ§λ€ μ μλ€.
* MVC ν¨ν΄μμλ 컨νΈλ‘€λ¬κ° View, Model λ λ€ μ»¨νΈλ‘€νκΈ° λλ¬Έμ ν μΌμ΄ λ§κ³ μ μ§λ³΄μνκΈ° μ΄λ ΅λ€κ³ νλ€. μ΄λ₯Ό κ°μ νκΈ° μν MVVM ν¨ν΄ λ±λ νμ΅ν μμ μ΄λ€!
βοΈ Model κ°μ²΄
- μ±μμ μ΄μ©λλ λ°μ΄ν°λ₯Ό μΊ‘μννλ κ²μ΄ μ£Ό λͺ©μ μΌλ‘ λ°μ΄ν°λ₯Ό μ‘°μ, μ²λ¦¬νλ λ‘μ§λ ν¬ν¨λλ€.
- Model κ°μ²΄λ μ¬μ©μ μΈν°νμ΄μ€μ κ΄λ ¨λ View κ°μ²΄μ λͺ μμ μΌλ‘ μ°κ²°λλ©΄ μλλ€.
- Model κ°μ²΄λ Controller μκ² λ°μ΄ν°κ° μμ λ¨μ μλ¦¬κ³ , Controller μ μν΄ λ°μ΄ν°λ₯Ό μμ νλ€.
- λͺ¨λΈ μμ) μ μ μ μ 보, μ μ μ μΌν μ°νκΈ° λͺ©λ‘, μ£Όμλ‘μ μ°λ½μ²
- ꡬν μμ) μλ²μ JSON λ°μ΄ν°μ μ°κ²° -> Codable νλ‘ν μ½μ μ€μν λͺ¨λΈ ꡬ쑰체λ₯Ό μμ±
βοΈ View κ°μ²΄
- μ±μμ 보μ¬μ§λ νλ©΄μ κ°μ²΄λ€μ View κ°μ²΄λΌκ³ νλ©°, μ¬μ©μ λμμ μλ΅ν μ μλ€.
- Model κ°μ²΄μ λ°μ΄ν°λ₯Ό 보μ¬μ£Όκ³ λ°μ΄ν°λ₯Ό νΈμ§ν μ μλλ‘ νλ κ²μ΄ μ£Ό λͺ©μ μ΄λ€.
- View κ°μ²΄λ μ¬μ©μ μ‘μ μ Controller μκ² μ λ¬νκ³ , Controller μ μν΄ View λ₯Ό μ λ°μ΄νΈνλ€.
βοΈ Controller κ°μ²΄
- View κ°μ²΄μ Model κ°μ²΄ μ¬μ΄μμ μ€κ°μ μν μ νλ€.
- View κ°μ²΄μμ μ΄λ€μ§ μ¬μ©μ μ‘μ μ μ λ¬λ°μ, μλ‘κ² μμ±λκ±°λ λ³κ²½λλ λ°μ΄ν°λ₯Ό Model κ°μ²΄μκ² μ λ¬νλ€.
- λ°λλ‘, Model κ°μ²΄μ λ°μ΄ν°κ° λ³κ²½λμμ λ μ΄λ₯Ό μ λ¬λ°μ, View κ°μ²΄μκ² μ λ¬νκΈ°λ νλ€.
- Controller κ°μ²΄λ λ€λ₯Έ κ°μ²΄μ μμ μ£ΌκΈ°(Life cycle) μ κ΄λ¦¬νκΈ°λ νλ€.
π μ½μ½μ ν°μΉ νλ μμν¬μμμ λ κ°μ§ 컨νΈλ‘€λ¬
μ½μ½μ ν°μΉ νλ μμν¬λ μ½λλ€μ΄ν 컨νΈλ‘€λ¬, λ·° 컨νΈλ‘€λ¬ λ κ°μ§ μ νμ μ 곡νλ€. iOS μ±μμλ λ·° 컨νΈλ‘€λ¬κ° μ½λλ€μ΄ν 컨νΈλ‘€λ¬μ μν μ κ²Ένλ κ²½μ°κ° λ§λ€.
βοΈ μ½λλ€μ΄ν 컨νΈλ‘€λ¬ (Coordinating Controller)
μ±μ μ 체 νΉμ μΌλΆ κΈ°λ₯μ κ΄λ¦¬ κ°λ νλ€. μ±λ³λ‘ λ€λ₯Έ λ‘μ§μ΄ μ£Όμ λλ μ₯μμ΄λ€.
- Delegation λ©μΈμ§μ μλ΅νκ±°λ μλ¦Όμ κ΄λ¦¬νλ€.
- μ¬μ©μμ λ²νΌ ν΄λ¦ λ±μ λ°λΌ μ μ‘λλ λμ λ©μΈμ§μ μλ΅νλ€.
- μ±μ μμνλ κ²½μ° κ°μ²΄ κ° μ°κ²°μ ν립νκ±°λ μ€μ μμ μ μννλ€.
- μμ ν κ°μ²΄μ μλͺ μ£ΌκΈ°λ₯Ό κ΄λ¦¬νλ€.
βοΈ λ·° 컨νΈλ‘€λ¬ (View Controller)
UIKit νλ μμν¬μμ View Controller λ UIViewController μ μλΈν΄λμ€μ΄λ©°, λ·° 컨νΈλ‘€λ¬μ μν μ λ€μκ³Ό κ°λ€.
- μ½ν μΈ λ₯Ό νλ©΄μ νμνλ λ·°λ₯Ό κ΄λ¦¬νκ³ , ν΄λΉ λ·°μ λν μ°Έμ‘°λ₯Ό μ μ§νλ€.
- λ·°λ₯Ό 보μ¬μ£Όλ κ²κ³Ό νμ λ·°λ‘μ μ νμ κ΄λ¦¬νλ€.
- Modal View λ₯Ό νμνκ³ , κΈ°κΈ°μ λ°©ν₯μ΄ λ°λ λ λ·°λ₯Ό νμ νλ€.
- λ©λͺ¨λ¦¬ λΆμ‘± κ²½κ³ μ μλ΅νλ€.
* UIKit νλ μμν¬μμλ UITableViewController μ κ°μ΄ UIViewController λ₯Ό μμλ°μ νΉμ λͺ©μ μ μλΈ ν΄λμ€λ₯Ό μ 곡νλ€.
* λ·° 컨νΈλ‘€λ¬λ μ¬λ¬ νλ μμν¬ κ°μ²΄μ λν Delegate, Data source κ°μ²΄μΈ κ²½μ°κ° λ§λ€.
π€ νλ‘μ νΈ A. MusicPlayer μ±μμ MVC ν¨ν΄ μ°Ύμ보기
- Model :: μμ μ¬μ νμΌ (sound)
ν΄λΉ νλ‘μ νΈμμλ νΉμ λͺ¨λΈ ν΄λμ€λ₯Ό μ°Ύμ보기λ μ΄λ ΅λ€..! asset μ μ μ₯λμ΄μλ μμ νμΌμ λͺ¨λΈλ‘ 보면 λλ€.
- View :: μΈν°νμ΄μ€ λΉλ(Storyboard) νΉμ μ½λλ‘ λ§λ νλ©΄μ μλ UI κ°μ²΄λ€
View μ λ°°μΉνλ UIButton, UILabel, UISlider κ°μ²΄λ€.. 맨 λ°μ κΉλ¦° View λ View Controller μ μν λ·°μ΄λ€.
- Controller :: Model κ³Ό View μ μ€κ°μ μν (μ½λμ λλΆλΆ)
- View -> Controller
λ·°μμ λ²νΌ ν΄λ¦, μ¬λΌμ΄λ κ° μ‘°μ λ±μ μ¬μ©μ μ‘μ (μ΄λ²€νΈ)μ΄ λ°μ -> λ·°μμ 컨νΈλ‘€λ¬λ‘ User action μ μ λ¬νλ€. - Controller -> View
μ΄λ²€νΈκ° λ°μνμ λ View νΉμ Model μ μ λ°μ΄νΈ μ·¨ν λ©μλ(IBAction)λ₯Ό ꡬνν΄λκ³ , View μμ μ λ¬λ°μ User action μ λ§κ² λμμ μν -> View μ λ°μ΄νΈ μμκ° μλ€λ©΄ μ λ¬νλ€. - Controller -> Model
νμΌμ λΆλ¬μ€κ±°λ, λ°μ΄ν° μμ μμ λ―Έλμ΄λ₯Ό λΆλ¬μ¨λ€. - Model -> Controller
μμ²ν λ°μ΄ν°λ₯Ό μ λ¬ν΄μ€λ€. (μκ°μ λ§λ μμ .. ?)
λ μμ보기
- MVVM (Model-View-ViewModel) λμμΈ ν¨ν΄
- MVVM ν¨ν΄μ μ μ©ν FLO μ± κ°λ° μΌμ§
'π iOS > UIKit' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[iOS] FLO μ± κ°λ° μΌμ§ #2. TableView λ‘ κ°μ¬ νλ©΄ κ°λ°νκΈ° (0) | 2021.06.30 |
---|---|
[iOS] FLO μ± κ°λ° μΌμ§ #1. MVVM ν¨ν΄κ³Ό Data Binding (0) | 2021.06.29 |
[iOS] λμμΈ ν¨ν΄ & Singleton ν¨ν΄ μ μ©λ μ¬λ‘ (0) | 2021.06.16 |
[iOS] View μ²΄κ³ - Window&View, Frame vs Bounds, λλ²κΉ ν΄ (0) | 2021.06.16 |
[iOS] Autolayout μ μ μ©νλ©° UIλ₯Ό κ°λ°νλ λ² (2) | 2021.06.13 |