Programming/iOS

[iOS] MVC Pattern

devssun 2021. 10. 7. 21:12
728x90
반응형

MVC

iOS의 MVC는 왜 문제가 되는가?

먼저, 일반적인 MVC 패턴을 살펴보자.

  • M : Model
  • V : View
  • C : Controller

사용자가 화면을 Controller를 조작하면 Controller는 Model을 통해서 데이터를 가져오고 그 정보를 바탕으로 시각적인 표현을 담당하는 View를 제어해서 사용자에게 전달하게 된다.

UI와 Business Logic을 분리할 수 있는 패턴이기 때문에 잘 사용한 MVC 패턴은 쉽게 변경할 수 있는 프로젝트가 된다.

그럼 Apple의 MVC를 한번 보자. 아래 링크로 이동하면 그림이 하나 나오는 데 위와 비슷한 그림이다. 정말 iOS에서 그림과 같은 개발이 가능할까?

Model-View-Controller

현실 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가 많은 관심을 얻고 있는듯하다.

반응형