소잃고 외양간 고친다…
매번 헷갈려서 검색했던 건데 이번에 동아리 면접 볼 때 기술 질문으로 나왔더라고요?
어버버 말한 것도 모자라 반대로 말했더라고요?
(이제와서후회해봤자달라지는건없다…)
이 참에 뇌에 새기고자 정리했다…
예전에 겪었던 이슈 🥲
메인 ViewModel을 @ObservedObject로 선언했는데, Navigation으로 화면을 전환했다가 다시 메인으로 돌아오면 값이 다 사라져있는 현상을 발견했다… 그치만 @StateObject로 수정하니까 해결됐음!
그럼에도 난 StateObject랑 ObservableObject를 반대로 알고 있었다 ㅠㅠ 사실 영문도 모른채 @StateObject로 수정했던 거라 새삼 기초도 없이 개발해온 것 같아 많이 부끄러웠다…
A property wrapper type that subscribes to an observable object and invalidates a view whenever the observable object changes.
관찰 가능한 개체를 구독하고 그 관찰 가능한 개체의 값이 변할 때마다 뷰를 초기화시키는 프로퍼티 래퍼 타입이다.
(출처 : Apple Developer)
→ @ObservableObject로 프로퍼티를 선언하면 상위 뷰의 상태값이 변동됐을 때 해당 프로퍼티를 초기화한다.
A property wrapper type that instantiates an observable object.
관찰 가능한 개체를 인스턴스화하는 프로퍼티 래퍼 타입이다.
→ @StateObject로 프로퍼티를 선언하면 앱의 생명주기가 유지되는 동안은 프로퍼티 값이 유지된다.
어려운 개념이 아닌데 왜 프로젝트할 때는 매번 헷갈리는지 … 이 기회에 제대로 인식한 것 같아 다행이다 ^_ㅠ