MVC
iOS의 MVC는 왜 문제가 되는가?
먼저, 일반적인 MVC 패턴을 살펴보자.
- M : Model
- V : View
- C : Controller
사용자가 화면을 Controller를 조작하면 Controller는 Model을 통해서 데이터를 가져오고 그 정보를 바탕으로 시각적인 표현을 담당하는 View를 제어해서 사용자에게 전달하게 된다.
UI와 Business Logic을 분리할 수 있는 패턴이기 때문에 잘 사용한 MVC 패턴은 쉽게 변경할 수 있는 프로젝트가 된다.
그럼 Apple의 MVC를 한번 보자. 아래 링크로 이동하면 그림이 하나 나오는 데 위와 비슷한 그림이다. 정말 iOS에서 그림과 같은 개발이 가능할까?
현실 Apple's MVC (Massive View Controller)
안타깝게도 실제 Apple의 MVC패턴은 그림과 같다. iOS에서는 화면을 그릴 때
UIViewController
를 사용하는데,UIViewController
이름에서 알 수 있듯이 View와 Controller가 결합되어 있어 UI와 Business Logic을 분리하기 어렵다. 그래서 한편으로는 Massive-View-Controller라고 불리기도 한다.장점으로는 두 개가 합쳐 있어 빠른 속도로 개발이 가능하다는 점이지만 위에서 말한 것 처럼 두 개의 결합을 떼기 어렵기 때문에 Controller가 하는 일이 너무 커지고 하나의 수정을 위해 많은 곳의 수정이 필요한 점 등이 있다.
물론 규모가 작은 프로젝트에서는 사용하기에 더할 나위없는 패턴이지만 프로젝트가 커질 수록 UI와 Business Logic 간의 분리 필요성이 느껴진다.
분리를 위해 MVP, MVVM, VIPER, RIBs와 같은 아키텍처를 적용하는 추세이다. 최근에는 Uber가 만든 RIBs가 많은 관심을 얻고 있는듯하다.
'Programming > iOS' 카테고리의 다른 글
[iOS] Clean Architecture, 내 생각 (0) | 2021.10.09 |
---|---|
[iOS] MVVM Pattern (0) | 2021.10.08 |
[iOS/Swift] didFinishLaunchingWithOptions 알아보기, 푸시로 앱 실행할 때 처리하기 (0) | 2021.10.06 |
[따라하기/iOS] App Switcher - 앱 화면 가리기 (2) | 2021.10.02 |
SwiftGen 라이브러리 간단 설명 & 사용법 (0) | 2021.07.12 |