[SwiftUI] @ObservedObject 와 @StateObject의 차이점

·2024년 11월 3일
0

iOS

목록 보기
4/5

소잃고 외양간 고친다…

매번 헷갈려서 검색했던 건데 이번에 동아리 면접 볼 때 기술 질문으로 나왔더라고요?

어버버 말한 것도 모자라 반대로 말했더라고요?

(이제와서후회해봤자달라지는건없다…)

이 참에 뇌에 새기고자 정리했다…

예전에 겪었던 이슈 🥲

Screenshot 2024-11-02 at 4.07.30 PM.png

메인 ViewModel을 @ObservedObject로 선언했는데, Navigation으로 화면을 전환했다가 다시 메인으로 돌아오면 값이 다 사라져있는 현상을 발견했다… 그치만 @StateObject로 수정하니까 해결됐음!

그럼에도 난 StateObject랑 ObservableObject를 반대로 알고 있었다 ㅠㅠ 사실 영문도 모른채 @StateObject로 수정했던 거라 새삼 기초도 없이 개발해온 것 같아 많이 부끄러웠다…

@ObservedObject

💡

A property wrapper type that subscribes to an observable object and invalidates a view whenever the observable object changes.

관찰 가능한 개체를 구독하고 그 관찰 가능한 개체의 값이 변할 때마다 뷰를 초기화시키는 프로퍼티 래퍼 타입이다.

(출처 : Apple Developer)

→ @ObservableObject로 프로퍼티를 선언하면 상위 뷰의 상태값이 변동됐을 때 해당 프로퍼티를 초기화한다.

@StateObject

💡

A property wrapper type that instantiates an observable object.

관찰 가능한 개체를 인스턴스화하는 프로퍼티 래퍼 타입이다.

(출처 : Apple Developer)

→ @StateObject로 프로퍼티를 선언하면 앱의 생명주기가 유지되는 동안은 프로퍼티 값이 유지된다.

어려운 개념이 아닌데 왜 프로젝트할 때는 매번 헷갈리는지 … 이 기회에 제대로 인식한 것 같아 다행이다 ^_ㅠ

profile
SOOP

0개의 댓글