3월 9일 수요일 / 45일 차
Part 4 - CH 07
당근마켓 스타일 중고거래 앱 만들기 막혔던 부분
MVVM
역할 및 동작 원리
- View
- iOS는 ViewController까지 View가 됩니다
- 사용자가 보여지는 View를 생각하면 된다. 유저 인터랙션을 받는 역할, 인터랙션을 받을 시 ViewModel에게 명령을 내립니다.
- ViewModel
- View를 표현하기 위해 만들어진 View를 위한 Model
- View와는 Binding을 하여 연결 후 View에게서 액션을 받고 또한 View를 업데이트합니다
- ex) textView에 보여줄 내용을 담당하는 함수 등, View에서 변화가 일어나는 ViewController의 역할을 담당
- Model
- 데이터, 비즈니스 로직, 서비스 클라이언트 등으로 구성
- 실제적 데이터
1. View에 입력이 들어오면 ViewModel에게 명령을 합니다
2. ViewModel은 필요한 데이터를 Model에게 요청합니다
3. Model은 ViewModel에게 요청된 데이터를 응답합니다
4. ViewModel은 응답받은 데이터를 가공해서 저장합니다
5. View는 ViewModel과의 Data Binding으로 인해 자동으로 갱신됩니다
장점
- View와 Model이 서로 전혀 알지 못하기에 독립성을 유지할 수 있습니다
- 독립성을 유지하기 때문에 효율적인 유닛 테스트가 가능합니다
- View와 ViewModel을 바인딩하기 때문에 코드의 양이 줄어듭니다
- View와 ViewModel의 관계는 N:1 관계입니다
- 유닛 테스트를 하기가 좋습니다. 그 이유는 ViewModel에는 UIKit 관련 코드가 없고 Controller와의 의존성도 없기 때문입니다
단점
- 간단한 UI에서 오히려 ViewModel을 설계하는 어려움이 있을 수 있습니다
- 데이터 바인딩이 필수적으로 요구됩니다
- 복잡해질수록 Controller처럼 ViewModel이 빠르게 비대해집니다
- 표준화된 틀이 존재하지 않아 사람마다 이해가 다릅니다
Data Binding
데이터 바인딩의 개념은 쉽게 말해 Model과 UI 요소 간의 싱크를 맞춰주는 것이라 할 수 있습니다.
이 패턴을 통해 View와 로직이 분리되어 있어도 한쪽이 바뀌면 다른 쪽도 업데이트가 이루어져 데이터의 일관성을 유지할 수 있습니다.
iOS에서 데이터 바인딩을 하는 방법은 다음과 같습니다.
- KVO
- Delegation
- Functional Reactive Programming
- Property Observer
참고 : https://jhtop0419.tistory.com/m/21
복습할 내용
- MVC, MVVM
오늘의 공부 후기
오늘은 Part4의 CH07 당근마켓 스타일 중고거래 앱 만들기에서
오류 때문에 제대로 진행하지 못했던 부분을 마저 진행해봤습니다.
챌린지의 시간 관계상 막히고 오래 걸리는 부분들은 넘어갔었는데 Part5를 진행하다가
다시 Part4를 해보니 해결하지 못했던 당시와는 달리 생각보다 쉽고 이해가 잘됐습니다.
MVVM이 처음에는 왜 이런 식으로 하는지 이해가 잘 되지 않았고 어려웠는데,
지속해서 MVVM을 사용하다 보니 코드를 보기에도 편하고 반응도 빨라 만족스럽습니다.
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.