반응형
Hacking with Swift 사이트의 강좌 번역본입니다.
Understanding property wrappers in Swift and SwiftUI
SwiftUI는 코드를 읽고, 쓰고 관리하기 쉽게 만들기 위해, 프로퍼티 래퍼(property wrappers)에 크게 의존하지만, 이전에 한번도 사용해본적이 없는 경우에, @과 $ 기호가 어디에서 왔는지 모르는것을 용서받을 것입니다 - 그것들은 처음엔 외계인으로 보일것입니다.
비록 property wrappers는 Swift 5.1에서 소개된 일반적인 Swift 기능이지만, SwiftUI에서 특히나 일반적입니다 - 우리 코드에서 상용구의 양을 줄이는데 도움이 되는 것이 목적인 @Published, @ObservedObject, @EnvironmentObject, 등을 보게 될 것입니다.
다음 몇개의 장에서 SwiftUI의 property wrapper 각각에 대해 자세히 살펴볼것이지만, 기본사항을 요약할 가치가 있습니다.
- 일부 property wrapper는 @State를 사용해서 구조체 내에 있는 프로퍼티들을 수정하는 것처럼, 다른것으로는 불가능한 효과를 얻을 수 있습니다.
- 일부 property wrapper는 특별히 다른 곳에서 추가 작업을 마무리 하는 것을 요구하고, 그 작업이 완료되지 않는 경우에, 크래쉬가 날 수도 있습니다. 예를들어, @FatchRequest는 Core Data 관리 객체 컨텍스트(context)를 environment 안에 미리 배치했을 것으로 예상합니다.
- 한 번에 하나의 property wrapper만을 적용할 수 있으며, @ObservedObject @Binding var value = SomeClass()는 허용되지 않습니다.
- 일부 property wrapper들은 비슷해 보이지만(@Environment와 @EnvironmentObject), 이들 모두 다르고 적절하게 사용하는 것이 중요합니다.
- 원하는 경우 자체 property wrapper를 만들 수 있지만, SwiftUI를 사용할 필요는 없습니다.
기본사항을 다루지만, 이러한 property wrappers 동작을 제대로 이해하기위해 각각 조사해볼 가치가 있습니다.
반응형
'SwiftUI > Appendix A' 카테고리의 다른 글
What is the @FetchRequest property wrapper? (0) | 2019.11.22 |
---|---|
What is the @GestureState property wrapper? (0) | 2019.11.22 |
What is the @Binding property wrapper? (0) | 2019.11.22 |
What is the @Environment property wrapper? (0) | 2019.11.22 |
What is the @EnvironmentObject property wrapper? (0) | 2019.11.22 |
What is the @ObservedObject property wrapper? (0) | 2019.11.21 |
What is the @Published property wrapper? (0) | 2019.11.21 |
What is the @State property wrapper? (0) | 2019.11.21 |