@StateObject → @ObservedObject + State 기능 (ObservedObject와 State는 변경사항이 있을때 뷰를 다시그리는 점에 있어서 같은역할이지만 이름이달라서 합쳐놓은듯한 느낌임)
VIew를 다시 랜더링할때 실수로 취소되는것을 방지해줌
가장 큰차이점은 소유라고함
StateObject는 라이프사이클에 의존하지 않고
다시그려지거나 네비게이션으로 넘어가서 화면이사라졌다가 나타나도 재사용되도록 유지되는 반면에
ObservedObject는 라이프사이클에 의존해서
뷰가 그려질때 다시 생성하게되어 값이 초기화되서 무거운작업 이있다면 성능에 영향이 있을수 있음
observedObject는 published 변수가 변경되면 뷰를 다시그리도록 해줍니다. 하지만 뷰가 그려질때 다시생성되는 문제가 있었습니다. 이를 개선한게 stateObject로 뷰의 라이프사이클에 관계없이 관리됩니다.
상위뷰에 적용해주면 하위뷰에 모두 전달됨
런타임 의존성확인이라
.environmentObject() 를 통해서 넣어주지않으면 앱 죽음
속성은 ObservedObject와 같음
뷰라이프사이클에 의존해서
뷰가 새로그러질시 deinit, init되면서 상태를 저장할수없음