Dev_Dylan

[iOS] MVC 요약 본문

iOS/iOS_Swift

[iOS] MVC 요약

Dylan_21 2023. 12. 8. 14:50

MVC는 개체가 각각 Model, View, Controller 3가지중 하나의 역할을 하며, 서로 통신 하는 방식을 정의한다.

모델-뷰-컨트롤러

  • 뷰컨트롤러에서의 View와 Controller의 역할을 모두한다.

View 가 Model을 알면 안된다?

기본적인 MVC 구조

Action의 흐름

  1. User 의 Action 입력 (User → View)
  2. Action을 Controller가 인지 (View → Controller)
  3. Controller가 사용자의 Action을 토대로 Model의 데이터를 조작(변경) (Controller → Model)
  4. 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.

https://developer.apple.com/library/archive/documentation/General/Conceptual/DevPedia-CocoaCore/MVC.html

'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