적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

Swift iOS 앱 개발/Swift 튜토리얼

[Stanford iOS] Lecture 9. Data Flow

hongssup_ 2021. 4. 12. 15:06
반응형

SwiftUI Lecture 9.

  • Property Wrappers
    Finally we get to talk about what @State, @Published, @ObservedObject really are!
    This is a very, very important topic.
  • Publishers
    Just a very “light” treatment of this topic for now.
  • Demo
    Publishers
    Palette Chooser (@Binding)

 

Property Wrappers

앞에 @가 붙은 것들은 다 property wrappers. A property wrapper is actually a struct. 

@State : 

@Published : 

@ObservedObject : 

Property Wrapper Syntactic Sugar

@Published var emojiArt: EmojiArt = EmojiArt()

이 구문을 풀어서 쓰면 다음과 같다. 

struct 타입의 wrappedValue 변수와 projectedValue 변수를 가지는 Published. 

struct Published {
    var wrappedValue: EmojiArt
    var projectedValue: Publisher<EmojiArt, Never>
}

이 구문은 다음과 같은 변수들을 사용할 수 있도록 해준다. 

var _emojiArt: Published = Published(wrappedValue: EmojiArt())
var emojiArt: EmojiArt {
    get { _emojiArt.wrappedValue }
    set { _emojiArt.wrappedValue = newValue }
}

그리고 property wrapper struct 안의 또다른 변수 projectedValue 에 접근하기 위해서 우리는 $emojiArt 처럼 앞에 $를 붙여 접근할 수 있다. 변수에 $ 안붙이면 연산프로퍼티를 통해 wrappedValue를 얻는 것, $ 붙이면 projectedValue.   

각 property wrapper는 서로다른 projectedValue를 가지고 있다. 

728x90
반응형