View in English

  • Apple Developer
    • 시작하기

    시작하기 탐색

    • 개요
    • 알아보기
    • Apple Developer Program

    알림 받기

    • 최신 뉴스
    • Hello Developer
    • 플랫폼

    플랫폼 탐색

    • Apple 플랫폼
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    • App Store

    피처링

    • 디자인
    • 배포
    • 게임
    • 액세서리
    • 웹
    • 홈
    • CarPlay
    • 기술

    기술 탐색

    • 개요
    • Xcode
    • Swift
    • SwiftUI

    피처링

    • 손쉬운 사용
    • 앱 인텐트
    • Apple Intelligence
    • 게임
    • 머신 러닝 및 AI
    • 보안
    • Xcode Cloud
    • 커뮤니티

    커뮤니티 탐색

    • 개요
    • Apple과의 만남 이벤트
    • 커뮤니티 주도 이벤트
    • 개발자 포럼
    • 오픈 소스

    피처링

    • WWDC
    • Swift Student Challenge
    • 개발자 이야기
    • App Store 어워드
    • Apple 디자인 어워드
    • 문서

    문서 탐색

    • 문서 라이브러리
    • 기술 개요
    • 샘플 코드
    • 휴먼 인터페이스 가이드라인
    • 비디오

    릴리즈 노트

    • 피처링 업데이트
    • iOS
    • iPadOS
    • macOS
    • watchOS
    • visionOS
    • tvOS
    • Xcode
    • 다운로드

    다운로드 탐색

    • 모든 다운로드
    • 운영 체제
    • 애플리케이션
    • 디자인 리소스

    피처링

    • Xcode
    • TestFlight
    • 서체
    • SF Symbols
    • Icon Composer
    • 지원

    지원 탐색

    • 개요
    • 도움말
    • 개발자 포럼
    • 피드백 지원
    • 문의하기

    피처링

    • 계정 도움말
    • 앱 심사 지침
    • App Store Connect 도움말
    • 새로 추가될 요구 사항
    • 계약 및 지침
    • 시스템 상태
  • 빠른 링크

    • 이벤트
    • 뉴스
    • 포럼
    • 샘플 코드
    • 비디오
 

비디오

메뉴 열기 메뉴 닫기
  • 컬렉션
  • 주제
  • 전체 비디오
  • 소개

WWDC23 컬렉션으로 돌아가기

  • 소개
  • 코드
  • SwiftUI의 Observation 알아보기

    Observation을 통해 SwiftUI 데이터 모델을 단순화하세요. Observable 매크로는 모델을 단순화해 앱의 성능을 향상합니다. Observation과 매크로의 기초를 익히고 ObservableObject에서 Observable로 마이그레이션하는 방법을 확인하세요.

    챕터

    • 1:03 - What is Observation?
    • 4:23 - SwiftUI property wrappers
    • 7:34 - Advanced uses
    • 10:27 - ObservableObject

    리소스

      • HD 비디오
      • SD 비디오

    관련 비디오

    WWDC23

    • Swift 매크로 상세히 알아보기
    • Swift 매크로 작성하기
    • SwiftData 만나보기
    • SwiftData 자세히 살펴보기
    • SwiftData로 마이그레이션하기
    • SwiftData로 스키마 모델링하기
    • SwiftData로 앱 만들기
    • SwiftUI 성능 쉽게 이해하기
    • SwiftUI의 새로운 기능
  • 비디오 검색…
    • 1:26 - Using @Observable

      @Observable class FoodTruckModel {    
          var orders: [Order] = []
          var donuts = Donut.all
      }
    • 2:12 - SwiftUI property tracking

      @Observable class FoodTruckModel {    
        var orders: [Order] = []
        var donuts = Donut.all
      }
      
      struct DonutMenu: View {
        let model: FoodTruckModel
          
        var body: some View {
          List {
            Section("Donuts") {
              ForEach(model.donuts) { donut in
                Text(donut.name)
              }
              Button("Add new donut") {
                model.addDonut()
              }
            }
          }
        }
      }
    • 3:12 - SwiftUI computed property tracking

      @Observable class FoodTruckModel {    
        var orders: [Order] = []
        var donuts = Donut.all
  var orderCount: Int { orders.count }
      }
      
      struct DonutMenu: View {
        let model: FoodTruckModel
          
        var body: some View {
          List {
            Section("Donuts") {
              ForEach(model.donuts) { donut in
                Text(donut.name)
              }
              Button("Add new donut") {
                model.addDonut()
              }
            }
            Section("Orders") {
              LabeledContent("Count", value: "\(model.orderCount)")
            }
          }
        }
      }
    • 4:41 - Using @State

      struct DonutListView: View {
          var donutList: DonutList
          @State private var donutToAdd: Donut?
      
          var body: some View {
              List(donutList.donuts) { DonutView(donut: $0) }
              Button("Add Donut") { donutToAdd = Donut() }
                  .sheet(item: $donutToAdd) {
                      TextField("Name", text: $donutToAdd.name)
                      Button("Save") {
                          donutList.donuts.append(donutToAdd)
                          donutToAdd = nil
                      }
                      Button("Cancel") { donutToAdd = nil }
                  }
          }
      }
    • 5:14 - Using @Environment

      @Observable class Account {
        var userName: String?
      }
      
      struct FoodTruckMenuView : View {
        @Environment(Account.self) var account
      
        var body: some View {
          if let name = account.userName {
            HStack { Text(name); Button("Log out") { account.logOut() } }
          } else {
            Button("Login") { account.showLogin() }
          }
        }
      }
    • 6:27 - Using @Bindable

      @Observable class Donut {
        var name: String
      }
      
      struct DonutView: View {
        @Bindable var donut: Donut
      
        var body: some View {
          TextField("Name", text: $donut.name)
        }
      }
    • 7:53 - Storing @Observable types in Array

      @Observable class Donut {
        var name: String
      }
      
      struct DonutList: View {
        var donuts: [Donut]
        var body: some View {
          List(donuts) { donut in
            HStack {
              Text(donut.name)
              Spacer()
              Button("Randomize") {
                donut.name = randomName()
              }
            }
          }
        }
      }
    • 9:18 - Manual Observation

      @Observable class Donut {
        var name: String {
          get {
            access(keyPath: \.name)
            return someNonObservableLocation.name 
          }
          set {
            withMutation(keyPath: \.name) {
              someNonObservableLocation.name = newValue
            }
          }
        } 
      }

Developer Footer

  • 비디오
  • WWDC23
  • SwiftUI의 Observation 알아보기
  • 메뉴 열기 메뉴 닫기
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    메뉴 열기 메뉴 닫기
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    메뉴 열기 메뉴 닫기
    • 손쉬운 사용
    • 액세서리
    • Apple Intelligence
    • 앱 확장 프로그램
    • App Store
    • 오디오 및 비디오(영문)
    • 증강 현실
    • 디자인
    • 배포
    • 교육
    • 서체(영문)
    • 게임
    • 건강 및 피트니스
    • 앱 내 구입
    • 현지화
    • 지도 및 위치
    • 머신 러닝 및 AI
    • 오픈 소스(영문)
    • 보안
    • Safari 및 웹(영문)
    메뉴 열기 메뉴 닫기
    • 문서(영문)
    • 튜토리얼
    • 다운로드
    • 포럼(영문)
    • 비디오
    메뉴 열기 메뉴 닫기
    • 지원 문서
    • 문의하기
    • 버그 보고
    • 시스템 상태(영문)
    메뉴 열기 메뉴 닫기
    • Apple Developer
    • App Store Connect
    • 인증서, 식별자 및 프로파일(영문)
    • 피드백 지원
    메뉴 열기 메뉴 닫기
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program(영문)
    • Mini Apps Partner Program
    • News Partner Program(영문)
    • Video Partner Program(영문)
    • Security Bounty Program(영문)
    • Security Research Device Program(영문)
    메뉴 열기 메뉴 닫기
    • Apple과의 만남
    • Apple Developer Center
    • App Store 어워드(영문)
    • Apple 디자인 어워드
    • Apple Developer Academy(영문)
    • WWDC
    최신 뉴스 읽기 Apple Developer 앱 받기
    Copyright © 2026 Apple Inc. 모든 권리 보유.
    약관 개인정보 처리방침 계약 및 지침