Geon

Discover Observation in SwiftUI 본문

SwiftUI/지식 창고

Discover Observation in SwiftUI

jgkim1008 2024. 11. 11. 23:52

 

Swift5.9 부터 좀더 쉽게 Observation을 할 수 있다.

  • @Property Wrapper를 3가지로 단순화하여, 고려해야할 옵션이 적어지기에 새로운 기능을 작성하는데 더 쉽게 추론할수 있기에 도입되었다.
  • @Observable 매크로를 사용하면 성능상의 이득이 있다.
  • @EnvironmentObject 는 없어지고 @Environment로 대체되었다.
  • @Binding 대신 Bindable로 변경되었다.
  • @ObservableObject 대신 추적해야할 변수에 @Observable로 표기, view에서는 var로 변경가능
  • 위 사진은 언제 어떤 프로퍼티 래퍼를 써야할지에 대한 표기

 

@Observable Macro를 사용했을때의 예시 코드

@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()
        }
      }
    }
  }
}

 

@Observable

Macro

  • @Observable 매크로를 사용하면 관찰을 지원할수 있도록 유형이 확장됨

Track access

  • 이를 통해 SwiftUI는 해당 속성에 대한 액세스를 추적하고 다음 속성이 해당 관찰에서 변경되는 시기를 관찰할 수 있다.

Property changes cause UI updates

  • 이와 같은 추적을 통해 UI는 특정 속성이 변경될때만 View Body를 다시 계산하며, 환상적인 성능 향상을 볼 수 있다.

 

 

출저: https://developer.apple.com/videos/play/wwdc2023/10149

'SwiftUI > 지식 창고' 카테고리의 다른 글

Write Swift macros(2)  (0) 2024.11.13
Write Swift macros(1)  (0) 2024.11.12
Demystify SwiftUI performance  (0) 2024.11.10
Explore UI animation hitches and the render loop  (0) 2024.11.09
Image DownSampling  (1) 2024.11.08