• MVVM (Model - View - ViewModel)
    • Model : 데이터 구조 표현 및 데이터 저장. 예를들어 연락처 앱의 PhoneBook 구조체.
    • View: 유저에게 UI 를 표현하기 위한 요소 + 사용자 입력 처리. 예를들어 UIButton , UITableView , UIViewController 모두 View 에 포함됨.
    • ViewModel : View 와 Model 의 중재자. 하지만 유저 액션을 받지 않으며, View 가 ViewModel 을 관찰하며 UI 를 업데이트한다. 이를 데이터 바인딩이라고도 한다. ViewModel 에서 갖고 있는 데이터를 View 에서 관찰하며 변경 사항이 일어났을 시 이를 View 에 적용한다. (옵저버 패턴 활용) ViewModel 은 View 의 존재를 정확히 몰라도 된다.

MVVM 특징

  • UI 로직과 비즈니스 로직의 분리.
    • UI 로직: 뷰를 그리는 로직
    • 비즈니스 로직: UI 로직이 아닌 앱의 기획사항에 따른 데이터 흐름을 처리하는 로직.
  • UI 로직과 비즈니스 로직의 분리가 일어났다는 것은 테스트 코드를 작성하기 용이하다는 것과도 같음.
  • UIViewController 의 책임이 MVC 때보다 덜어짐. 예를 들어, 네트워크 통신 코드는 사실 UI 와 관련없는 비즈니스 로직이기 때문에 View 이 아닌 ViewModel 안에 코드 작성. 그리고 ViewModel 에서 네트워크 통신의 결과로 무언가 값을 받으면, 내부 Publihser 에 이벤트를 발행시키고, View 는 그것을 구독하고 관찰하고 있다가 캐치해서 반영.

'Swift' 카테고리의 다른 글

Xcode Instruments  (0) 2024.07.31
다시 한 번 돌아보는 제네릭  (0) 2024.07.30
Swift 싱글톤 패턴  (0) 2024.07.14
(CS) 네트워크 대비 지식쌓기 (2/2)  (0) 2024.07.12
Swift UserDefaults  (0) 2024.07.11