728x90
generated by ChatGPT
✅ @StateObject vs @ObservedObject 차이점
둘 다 ObservableObject를 사용하는 방법이지만, 어디서 데이터를 소유하고 관리하는지가 다릅니다.
1️⃣ @StateObject
- 뷰에서 처음 생성된 ViewModel을 직접 소유
- 뷰가 재랜더링되어도 상태가 유지됨
- 새로운 뷰가 생성될 때 초기화가 한 번만 실행됨
💡 언제 사용해야 할까?
✅ 뷰가 ViewModel을 직접 생성하고 소유할 때
✅ 초기화가 여러 번 되면 안 되는 경우
2️⃣ @ObservedObject
- 뷰에서 ViewModel을 직접 소유하지 않음
- 외부에서 주입받는 ViewModel을 사용할 때
- 부모 뷰에서 전달된 ObservableObject를 계속 감시함
💡 언제 사용해야 할까?
✅ 부모 뷰에서 전달받은 ViewModel을 사용할 때
✅ ViewModel을 여러 뷰에서 공유할 때
🚀 차이 정리
@StateObject | @ObservedObject | |
ViewModel 생성 | 뷰에서 직접 생성 | 외부에서 주입받음 |
초기화 시점 | 뷰가 생성될 때 단 한 번만 | 부모 뷰에서 변경될 때마다 적용 |
상태 유지 | 뷰가 갱신되어도 유지 | 새로운 인스턴스를 받으면 변경됨 |
🔥 정리
- @StateObject → "내가 만든 ViewModel을 직접 관리할 때!"
- @ObservedObject → "다른 곳에서 넘겨준 ViewModel을 감시할 때!"
현재 ContentView에서는 **ViewModel을 직접 생성하므로 @StateObject**가 맞고,
다른 서브 뷰에서 ViewModel을 받아서 쓰려면 @ObservedObject를 사용하면 됩니다! 🚀
'STUDY > Swift & iOS' 카테고리의 다른 글
EnvironmentObject, StateObject (0) | 2025.02.22 |
---|---|
Xcode Preview/Emulator 관련 (1) (0) | 2025.01.30 |
[Swift]Section 8 - Intermediate Swift Programming - Control Flow and Optionals (0) | 2023.01.31 |
[Swift] Section 7 - Using and Understanding Apple Documentation (0) | 2023.01.26 |
[Swift] Section 6 - Auto Layout and Responsive UIs (0) | 2023.01.24 |