View에 대하여

GomHyeok·2024년 6월 7일

회고록

목록 보기
11/18

아.. 최근 기획 심의와 시험기간 이슈로 인하여 학습에 조~~금 소홀했다(사실 핑계😭)
그래도 같이 기획을 진행한 우리팀 진짜 완전완전 열심히하고 고생했다..! 제발 통과해라..!!

이제 진짜 즐거운 개발 시작!!


📙 View와 ViewModel

일단 이번 주는 개발을위해 View에 대하여 다시 학습하기 시작했다.

우선 View를 학습하기 전에 저번에 학습한 viewModel에 대하여 다시 학습하였다.

📚 ViewModel

  • ViewModel = View에서 사용할 데이터를 홀드하는 친구
    - UIState, ViewModel(iOS), RandObject(RO) = observe의 대상
    • 결국 중요한 것은 ViewControllerdptj Observe 하는 것 = Collect = ObserverPattern
    • 그럼 Observe한다는 것은??
      = Observe당하는 친구(ViewModel)가 바뀌면 그에 맞춰 View가 변경되어야 한다!

📚 View

그럼 View는 그냥 observe하다 변경만 되는 친구인가?? 라는 생각이 들어 view에 대하여 학습했다.

  • 우리가 만드는 모든 view는 Tree구조다(자료구조)
    - 루트 View부터 시작하여 연결된 모든 view가 변화하게 해야한다
    - 근데 이렇게 하면성능 저하 발생할 수있다.
    - 이유 :
    - redrawing이 반복적으로 발생할 수 있다.
    - 상태의 변화가 특정 부분에만 반영되어야 하는데 전부 넣어두고 쓰지 않는 경우
    = 필요 없는 데이터를 넣어두면 해당 데이터를 반영할 필요 없는 UI가 반응한다
    나중에 쓰겠지~~~ 금지!!!!😡
  • producr 배포 전에 디버거 사용하여 확인후 출시할 것!!
  • View에서 obserable한 친구를 보고있다 변경되면 view를 변경시킨다
  • 그러면 ViewModel은 view당 하나가 좋을까 여러개가 좋을까???
    - 전혀 겹치치 않는게 있고 그리고 각각이 너무 크다면?
    - 하나에 넣으면그 크기가 너무 커진다 = 관리해야 하는 Data가 너무 많아짐
  • 어떤 ViewModel, Class를 재사용 할 수 있을지 고려!
    - 재활용이 사능하다면 나누는것이 좋다!
  • CustomView를 낀 경우
    - CustomView가 복잡하면 일단 분리되어 데이터를 받았을 때 refresh하는 데이터 구조 필요!
    • 커스텀 뷰와 해당 데이터를 다루는 dataClass가 필요하다! 👉 재활용과 확장성
    • ViewModel에서 재활용 성이 있는 요소는 따로 빼서 DataClass로 만들어야 한다
  • Hot Stream/Observer로 다루는 View
    - Hot Stream = 그 결과만 보여준다
    (유튜브 라이브 👉 이전에 있던 것이 아니라 지금것만 딱 보여준다)
    • Cold Stream = 결과까지의 모든 과정을 보여준다
      (넷플릭스 👉 이전에 녹화되어 있는 것 까지 볼 수 있다)
    • 네트워크 API에서도 잘 생각해야한다
      • 지금 딱 데이터가 필요하면 Hot으로
        • 그 전의 과정까지 필요하다면 Cold로
  • ViewModel이 View를 알면 MVP랑 다를게 없음 👉 메모리릭 발생
  • View에서 ViewModel의 함수를 실행시켜 함수의 결과값을 가져와야 한다면??
    - ViewModel의 A=1, B=2일때 View에서 A+B의 값이 필요하다면?
    • A+B=c인 c를 observing해야지 직접 View에서 ViewModel에 요청하게 만들면 안티패턴!!

후.. 공부하다 보니까 어찌저찌 다시 Clean Architecture까지 보게 되었는데 저번에 조금 이해 안갔던 것을 다시 보게 되었다

  • 외부 = 저수준
  • 내부 = 고수존(핵심 Logic)
    - 플렛폼 의존이 없어야한다.
    • import해서 돌아가는 코드가 있으면 안된다!! = 언어 수준에서 돌아가도록 작성
profile
github : https://github.com/GomHyeok/

0개의 댓글