인프런 커뮤니티 질문&답변

(알 수 없음)님의 프로필 이미지
(알 수 없음)

작성한 질문수

Part1: 진짜 왕초보 iOS 배우기(SwiftUI, SwiftData, 2024)

ToDo 앱 @Observable 기능(?) 질문입니다

작성

·

60

0

안녕하세요 강사님 좋은 강의 잘 수강하고 있습니다!

강의에서 @Observable 사용시 큰 설명 없이 넘어가셔서 개인적으로 알아보는 중입니다

[SwiftUI] Observable macro를 통해 모델 데이터를 만들고 관리하는 방법 (tistory.com)

[SwiftUI] iOS17 이후의 상태 관리 (velog.io)

[SwiftUI] @Observable 매크로 (1) (tistory.com)

Discover Observation in SwiftUI (feat. WWDC 2023) :: iOYES (tistory.com)

등 위의 링크들을 살펴보았지만 초보자인 제가 이해하기엔 어려운 내용들이었습니다

그래서 강사님 강의 중 SwiftUI의 Property Wrapper(@State, @Binding...)를 구입해봤지만 아쉽게도

@Observable이 아닌 구 버전의 프로퍼티 래퍼인 @ObservableObject를 설명해주시더라구요(이 부분은 아쉬웠지만 나머지 래퍼들을 공부하는 데에는 정말 좋은 강의라고 생각합니다!)

일단 강의의 흐름을 보면 @State와 묶어서 설명하시길래 @State는 변수의 변화를 감지하기 위한 래퍼이고 @Observable은 class나 구조체 내 멤버 프로퍼티 값들이 변경되는 걸 감지하기 위한 래퍼라고 이해했는데 맞게 이해한 걸까요..?

 

답변 주시면 감사하겠습니다!!

좋은 하루 보내세요!

답변 2

0

애구마(agmma)님의 프로필 이미지
애구마(agmma)
지식공유자

안녕하세요

제 프로퍼티 강의 섹션 3에 Observable 매크로 부분에서 해당 부분을 설명해드립니다.

간단히 설명드리면 기존 SwiftUI ObservableObject를

Observable 매크로를 이용해, 좀더 쉽고 효율성있게 사용하게 만들어줍니다.

답변 주셔서 감사합니다! 한 번 확인해 보겠습니다!

0

안녕하세요, 인프런 AI 인턴입니다. (알 수 없음)님.

SwiftUI에서의 상태 관리는 중요한 주제이며, 이를 이해하는 것은 효과적인 앱 개발에 필수적입니다. 질문하신 @Observable과 관련된 전반적인 내용을 간단히 설명드리겠습니다.

SwiftUI의 @Observable

  • @Observable의 역할: iOS 17에서 도입된 @Observable은 주로 클래스나 구조체 내 멤버 프로퍼티의 변화를 감지하고 화면에 적용하는 기능을 합니다. 이를 통해 SwiftUI는 데이터의 변화를 자동으로 UI에 반영시킬 수 있습니다.

  • @State와의 차이점:

    • @State는 뷰의 단일 인스턴스에서 간단한 값 조작을 관리하기 위한 래퍼입니다. 이는 개별 뷰 내부에서만 사용되며, 값이 변경될 때마다 자동으로 뷰를 새로고침합니다.
    • @Observable은 상태가 복잡한 클래스를 관리하는 데 사용되며, 외부에서도 해당 프로퍼티의 변경 사항을 감지합니다. 이는 보통 뷰모델에서 사용되어 UI와 로직 사이의 데이터를 다룹니다.

참고할 만한 질문 및 답변

  1. “@Bindable VS @Environment + @Bindable”
    이 질문에서는 SwiftUI의 프로퍼티 래퍼 사용에 대한 자세한 설명을 제공하고 있습니다. @Bindable과 @Environment의 조합이 어떻게 작동하는지 설명하므로, 상태 관리와 관련된 이해를 높일 수 있습니다.

  2. “39강 ProfileViewModel 연결할때 궁금합니다.(초보)”
    클래스 연결 시 @Bindable에 대한 이해를 돕는 설명이 있습니다. 이는 @Observable과 연관되어, 클래스를 다른 뷰에 전달할 때의 메커니즘을 잘 이해할 수 있도록 도와줍니다.

질문하신 것에 대한 이해가 맞음에도 불구하고, 추가적으로 SwiftUI 공식 문서나 Swift 관련 서적을 참조하시면 더욱 신뢰할 수 있는 자료로 이해를 넓히실 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

(알 수 없음)님의 프로필 이미지
(알 수 없음)

작성한 질문수

질문하기