728x90
Property Wrapper
- Property Wrapper는 프로퍼티를 정의하는 코드와 프로퍼티가 어떻게 저장되는지 관리하는 코드를 분리하는 레이어를 추가한다.
- 예를 들어, thread safety를 체크하거나 혹은 데이터를 데이터베이스에 저장하는 프로퍼티들을 가지고 있다고 가정했을 때, 기존엔 모든 프로퍼티에 대해서 해당 코드들을 작성해야한다
- 하지만 Property Wrapper를 사용한다면 프로퍼티를 관리하는 코드를 Property Wrapper를 정의할 때 한 번만 작성하고 그것을 재사용할 수 있다.
정의
- Property Wrapper를 정의하기 위해서, structure, enumeration, class와 같이 Property Wrapper가 사용될 수 있는 객체를 정의해야하며 해당 객체는 wrappedValue 프로퍼티를 정의하고 있어야 한다.
- 정의한 객체 앞에 @propertyWrapper 라는 프로퍼티 래퍼를 붙인다.
Example
import UIKit
// 무조건 2를 곱한 뒤 저장하게 하는 propertyWrapper 선언
@propertyWrapper
struct Doubling<T: Numeric> {
var wrappedValue: T = 1 {
didSet {
self.wrappedValue = 2 * wrappedValue
}
}
}
class Example {
@Doubling
static var originNumber: Double = 1
}
Example.originNumber = 3
print(Example.originNumber) // 6.0
728x90
'Swift' 카테고리의 다른 글
[Swift] allSatisfy(_:) (0) | 2022.03.28 |
---|---|
[Swift] Extension에 storedProperty 선언하기 (0) | 2022.03.26 |
[Swift] self vs Self (0) | 2021.12.08 |
[Swift] Dynamic Dispatch vs Static Dispatch (0) | 2021.12.05 |
[Swift] 클로저 (Closure) (0) | 2021.07.12 |
댓글