iOS/Swift 상식

property wrapper

HJ39 2023. 3. 10. 01:13

특징

특정 값을 한 번 감싸서 저장을 위한 로직(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 로직을 활용할 수 있게 된다.

 

 

 

 

 

# 참고한 사이트

  1. https://green1229.tistory.com/238
  2. https://dongminyoon.tistory.com/52
  3. https://dongminyoon.tistory.com/52

'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