@StateObject → @ObservedObject + State 기능 (ObservedObject와 State는 변경사항이 있을때 뷰를 다시그리는 점에 있어서 같은역할이지만 이름이달라서 합쳐놓은듯한 느낌임)

VIew를 다시 랜더링할때 실수로 취소되는것을 방지해줌

가장 큰차이점은 소유라고함

StateObject라이프사이클에 의존하지 않고 다시그려지거나 네비게이션으로 넘어가서 화면이사라졌다가 나타나도 재사용되도록 유지되는 반면에 ObservedObject라이프사이클에 의존해서 뷰가 그려질때 다시 생성하게되어 값이 초기화되서 무거운작업 이있다면 성능에 영향이 있을수 있음

observedObject는 published 변수가 변경되면 뷰를 다시그리도록 해줍니다. 하지만 뷰가 그려질때 다시생성되는 문제가 있었습니다. 이를 개선한게 stateObject로 뷰의 라이프사이클에 관계없이 관리됩니다.

VS @EnvironmentObject

상위뷰에 적용해주면 하위뷰에 모두 전달됨

문제점

런타임 의존성확인이라

.environmentObject() 를 통해서 넣어주지않으면 앱 죽음

속성은 ObservedObject와 같음

뷰라이프사이클에 의존해서 뷰가 새로그러질시 deinit, init되면서 상태를 저장할수없음