Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- CoreData Concurrency
- Clean swift
- NSSortDescriptor
- LightWeight Migration
- CoreData Filter
- Java
- 2022 부스트캠프
- Swift 고차함수
- Persistent store Coordinator
- 트레일링 클로저
- codability
- NSManagedObject SubClass
- Swift LinkedList
- NSPredicates
- Swift closure
- iOS Static Library 사용하는방법
- persistentStoreCoordinator
- iOS Static Library
- leetcode #01
- Swift
- CoreData Stack
- 스위프트 클로저
- Raw value and Associated value
- 다익스트라 이해
- dateFormatter
- 일급 객체
- 1009번
- CoreData
- expensive operation
- Associated Value
Archives
- Today
- Total
하루를살자
MVVM 을 사용해보고 느낀점 - iOS 본문
배경
- ViewController 를 어떻게 하면 조금이나마 어떻게 하면 비대해지는 것으로 부터 방지할수 있을까?
- 기존 프로젝트의 MVC 패턴 를 사용하면서 ViewController 가 가졌던 책임들:
- 네트워크 API 호출
- 네트워크 응답에 대한 모델 데이터 가공
- 뷰에게 가공 된 데이터를 뿌려주기
- 비지니스 로직
이런 MVC 패턴의 특징은 ViewController 에 비지니스 로직 뿐만아니라 데이터 가공, 네트워크 호출 등의 역할 을 다 맞아서 하고 있다. 여기서 문제점은 많은 기능이 하나의 공간 ViewController 라는 곳에서 모두 이루어 지고 있기 때문에 에러가 발생했을때 디버그 및 수정, 각 기능의 테스트 등이 이루어지기 쉽지않게 된다.
배운점
- ViewController 의 비지니스 로직을 ViewModel 에 분리 함으로써 위 문제점을 해결해줄 수 있었다.
- 기존 ViewController 에서 진행해오던 API 콜 로직 을 ViewModel 로 분리.
- 데이터를 Parsing 하는 과정을 ViewModel 로 분리.
- 각 ViewModel 을 통해서 독립적인 비지니스 로직의 test 가 가능하다.
- 꼭 MVVM 을 사용하지 않아도 여러개의 VIewController 를 만들어서 역할을 분리시킬수도 있다. 그래서 무조건 MVVM 을 써야한다는 강박관념을 가지는건 좋지 않다고 생각.
- 프로젝트 를 설계하는 과정에서 관련된 ViewModel - View - Model 을 미리 생각해보고 진행해야하기 때문에 설계 하는 방법이 미숙하면 프로젝트진행이 더뎌 질수있다.
Comments