- 모의면접 회고:
- Q: View와 ViewModel 간 데이터 흐름을 어떻게 설계했나요?
- View와 ViewModel 간의 데이터 흐름은 크게 단방향으로 설계되어 있습니다
사용자가 View에서 어떤 행동을 하면, 그 이벤트가 ViewModel로 전달됩니다 타이머를 추가하거나 삭제하는 버튼을 누르면 그 신호가 ViewModel의 입력으로 들어가고, ViewModel은 내부에서 Repository를 호출해 실제 데이터를 변경하거나 가져옵니다 이렇게 처리된 결과는 다시 ViewModel의 출력 값으로 방출되고, View가 이를 구독해서 화면을 갱신하는 구조입니다
- Q: Struct와 class를 동시에 활용해야 하는 상황은?
- 값 타입과 참조 타입의 장점을 같이 가져가고 싶을 때 입니다 데이터 자체는 struct, 데이터를 관리하거나 상태를 공유해야 하는 부분은 class로 설계합니다 타이머 앱에서는 TimerModel은 struct로 만들었습니다 복사될 때마다 안전하게 분리되고, 여러 화면에서 같은 데이터를 의도치 않게 공유하는 걸 막을 수 있었습니다 TimerEditViewModel 같은 건 class로 두었습니다 뷰랑 바인딩돼서 상태를 계속 관찰하고 업데이트해야 하기 때문에 참조 타입이 적합했습니다 이렇게struct와 class를 나누면, 데이터는 유지하면서도 상태를 공유할 수 있습니다 그래서 모델은 struct, 로직이나 뷰모델은 class로 나눠서 활용했습니다