특징
특정 값을 한 번 감싸서 저장을 위한 로직(setter)과 얻어오기 위한 로직(getter)을 어느 정도 분리해서 반복을 줄여주는 방법을 제공한다.
키워드는 지역 변수에만 사용이 가능하다.
@UserDefault, @State, @Binding등 많이 있다. 아마 SwiftUI를 사용해 보았다면 한 번쯤은 보았을 것이다.
예제를 살펴보면 쉽게 이해할 수 있다.
@propertyWrapper
struct Money{
private var money: Int
init() {self.money = 0}
var wrappedValue: Int{
get {return self.money}
set {self.money += newValue}
}
}
struct Bank{
@Money var firstPeopleMoney: Int
@Money var secondPeopleMoney: Int
}
var bank = Bank()
bank.firstPeopleMoney = 1
print(bank.firstPeopleMoney) // 1
bank.firstPeopleMoney = 2
print(bank.firstPeopleMoney) // 3
Money라는 구조체를 생성하고 @propertyWrapper 키워드를 붙이면 @Money 키워드가 사용가능해진다.
struct Bank에서 firstPeopleMoney는 @Money 키워드를 붙이면 Money 구조체 안에 있는 getter, setter 로직을 활용할 수 있게 된다.
# 참고한 사이트
'iOS > Swift 상식' 카테고리의 다른 글
Result Type (0) | 2023.03.25 |
---|---|
Some (0) | 2023.03.25 |
defer (0) | 2023.03.09 |
Extension 이란? (0) | 2023.03.08 |
Escaping 사용하기 (0) | 2023.03.05 |