지난 얼레벌레 iOS 앱개발에서 첫 API 연동을 진행하면서 굉장히 어려움이 많았다.
잘 모르면서 되는대로 추가 추가 추가 하다보니 어느새 누더기 코드가 되어있었다.
그래서 새 프로젝트를 시작하며 이 부분만큼은 꼭 개선하자라고 다짐했다.
지난 프로젝트에서 API 연동을 위해 ViewModel를 사용했는데, 이 ViewModel을 당장 필요한 하위 View에서 인스턴스를 만들어 사용했었다. 그러다가 데이터가 업데이트가 안되서 결국 최상위에서 하위 뷰로 넘겨주는 방식으로 구현했다.
또 활용법을 잘 몰라서 상태값을 ViewModel에서 onReceive로 받아 오는 등 중복으로 관리했다. 그런식으로 만드니 코드는 복잡해지고, 한 번 수정하는데도 머리가 터질듯이 복잡하고, 피로감은 갈 수록 늘어갔다.
이번 새 프로젝트에선 절대 그러지 말아야지 하면서 큰 그림 + 활용법에대해 고민했다.
일단 이전 프로젝트에서는 최상위에서 내려줬던 ViewModel을 최상위뷰에서 .environmentObject
로 설정하고, @EnvironmentObject
로 필요한 뷰에서만 불러서 썼다.
(사실 이전 프로젝트에서도 생각한 방법이지만 그때는 이미 사이즈가 커져서 손대기가 힘들었다.)
또 ViewModel을 쓰면 주로 @Published
로 데이터를 관리하는데, 기존에는 화면 구성용 State들을 따로 관리했었다.
이번에는 @Published
데이터를 서버 데이터를 캐싱하는 것처럼 사용했다.
아직 모든 API를 연동한 것은 아니지만 현재까지는 지난번과 비교해서 코드가 깔끔하고 가독성이 좋아졌다. 이에 새로운 기능 구현 혹은 수정시에도 품이 적게 들어가고있다.
!!주의!! 본 게시글은 학습을 기록하고, 경험을 공유하는 목적으로 작성되었습니다.
내가 만난 문제와 선택지들, 내가 선택한 해결법을 포스팅하였기 때문에
틀린 부분과 정답이 아닌 것들이 포함되어 있을 수 있습니다.