Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- TabBarItems
- Xcode
- view
- spring guide
- schemes
- Identity
- developer
- swift
- Structural Identity
- lazy 위험성
- frame이해
- Demystify SwiftUI
- xml delegate
- lazy 사용
- ios login
- Lazy
- Quick Help
- consuming a restful web service
- Your app is missing support for the following URL schemes: your_ios_client_id
- Explict Identity
- 적절한 사용방법
- Spring
- ios
- 보라색오류
- git branch strategy
- native개발
- Lifetime of SwiftUI
- WWDC21
- lifecycle
- bounds이해
Archives
- Today
- Total
Dev_Dylan
[iOS] MVC 요약 본문
MVC는 개체가 각각 Model, View, Controller 3가지중 하나의 역할을 하며, 서로 통신 하는 방식을 정의한다.
- 뷰컨트롤러에서의 View와 Controller의 역할을 모두한다.
View 가 Model을 알면 안된다?
기본적인 MVC 구조
Action의 흐름
- User 의 Action 입력 (User → View)
- Action을 Controller가 인지 (View → Controller)
- Controller가 사용자의 Action을 토대로 Model의 데이터를 조작(변경) (Controller → Model)
- Model이 변경됨에 따라 View를 update (Model → Controller → View Update)
- Model
- 특정 데이터를 캡슐화
- 데이터 조작 및 처리
- 논리, 계산 정의
- 데이터의 대부분은 App 이 로드 된 후 모델 개체에 들어있어야 한다.
- 이상적인 Model 은 데이터를 표시하는 View 개체에 명시적으로 연결되지 않아야 하고, 사용자가 해당 데이터를 편집할 수 있어야 한다. (Model과 View는 서로 몰라야 한다.)
- MVC 에서 모든 중요한 데이터가 모델 에 캡슐화 되어 있다.
- 앱이 실행되고 데이터들은 모델에 있어야 한다.
- View
- 모델 객체의 데이터를 표시한다.
- 표시중인 데이터의 저장을 책임 지면 안된다.
- 그 데이터를 편집 할 수 있도록 하는 것
- UIKit, AppKit FrameWork에서는 뷰 클래스를 제공함
- Controller
- 다른 객체 (model, view)의 수명 주기를 관리한다.
- View 객체가 Model 객체의 변경사항을 학습하는 통로, 반대도 마찬가지이다.
Cocoa 에서의 MVC
기존 MVC 와는 다르게 View 와 Controller가 붙어있다.
그렇기 때문에 Controller의 크기는 매우 방대해진다
(extension을 사용해도 자체 파일의 길이가 길어짐 + 코드로 뷰를 그린다면 더더욱)
iOS 에서는 MVC를 Massive View Controller 라고 하기도한다.
특징
- 전체적으로 보면 코드의 양이 적다.
장점
- 단순하다.
- 확장이 용이함
- 개발 속도 면에서 월등히 우수하다.
- 많은 객체는 재사용이 용이함
- 인터페이스가 더 잘 정의되는 경향이 있음
단점
- View, Controller의 의존성이 강하다.
- ViewController의 코드가 방대해진다 (물론 다른 아키텍쳐에 비해)
- View-Controller의 강한 의존성으로 인해 테스트 작성이 어렵다.
언제 MVC 를 사용하는 것이 좋을 것인가?
- 간단한 프로젝트, 규모가 작은 프로젝트에서 유지비용 보수가 낭비가 된다고 판단될 때.
- 빠른시간내에 프로젝트를 완성 할 때.
- 아키텍쳐에 대한 연구 시간을 많이 쏟을 수 없을 때.
Ref.
'iOS > iOS_Swift' 카테고리의 다른 글
[iOS] XML Parser, XML Parsing 하기 (0) | 2024.04.28 |
---|---|
[iOS] Lazy 키워드를 적절하게 사용하는 방법 (0) | 2024.01.13 |
[iOS] Frame, Bounds 이해하기 (0) | 2023.12.31 |
Swift Basic _ Data Type (2) (0) | 2022.01.28 |
Swift Basic _ Data Type (1) (0) | 2022.01.28 |
Comments