일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- flutter
- algorithm
- xcode
- dart
- toyproject
- keyWindow
- Equatable
- OSLog
- Widget
- pubspec.yaml
- tip
- UIAccessibility
- Swift
- Leetcode
- enumerations
- pubspec
- protocol
- reetcode
- IOS
- basic
- COMMIT
- Extentsion
- ToDoRim
- listview
- SwiftGen
- designPattern
- swiftlint
- it
- github
- GIT
- Today
- Total
수니의 개발새발
[iOS/Swift] MVC 디자인 패턴의 이해 본문
MVC 패턴의 이해
Model
- 앱의 Data + Status + Logic 을 담당
View
- 사용자에게 보여지는 User Interface를 구성
Controller
- Model과 View 사이의 중재자 역할
- 사용자가 View를 통해 Interaction하면 Controller가 이를 Control
Apple의 MVC
- View와 Controller를 ViewController 하나로 취급한다.
Swift 관점의 MVC 흐름
Controller to View/Model
- View에 대해서 outlet을 이용해 View에게 직접 접근할 수 있다.
- Model에 직접 접근할 수 있다.
View to Controller
- target-Action 구조로 사용자의 행위에 따라 필요한 함수를 호출 할 수 있다.
- 또한, delegate, datasource 로 미리 정해진 방식의 요청을 수행할 수 있다.
Model to Controller
- Notification & KVO 방식을 통해 Model의 변화를 Controller에 알릴 수 있다.
MVC 특징
장점
- 간단하고 직관적인 구조를 갖고 있어, 작은 프로젝트에서는 쉽고 빠르게 개발할 수 있다.
- Apple에서 기본적으로 지원하고 있는 패턴이기 때문에 쉽게 개발할 수 있다.
단점
- View와 Controller의 강한 결합도 : Controller가 View의 Life Cycle까지 관리하기 때문에 View와 Controller 분리가 어렵다. 이로 인해 재사용성이 떨어지고 유닛 테스트를 진행하기 어렵다.
- 거대한 View Controller (Massive View Controller) : Life Cycle 관리, delegate, datasource 관리, 네트워크 요청 등 많은 코드가 Controller에 작성되어 Controller의 크기가 비대해지고 내부 구조는 복잡하게 된다. 이는 프로젝트 규모가 커질수록 유지보수가 어렵다.
🙋🏻♀️ 참고
'iOS - Swift' 카테고리의 다른 글
[iOS/Swift] Coordinator 패턴의 이해 (0) | 2024.05.16 |
---|---|
[iOS/Swift] Clean Architecture 의 이해 (0) | 2024.05.16 |
[iOS/Swift/Basic] 범위 연산자 (0) | 2024.02.13 |
[iOS/Swift/Basic] 참조 비교 연산자 : === !== (0) | 2024.01.29 |
[iOS/Swift/Basic] 나머지 연산자 : % truncatingRemainder (0) | 2024.01.29 |