• Swift 5.1๋ถ€ํ„ฐ ์‚ฌ์šฉ๊ฐ€๋Šฅ
  • getter, setter, computed property ์ฝ”๋“œ ์ค‘๋ณต์„ ์ค„์ผ ์ˆ˜ ์žˆ์Œ
  • ์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ ๋กœ์ง์„ ๊ณต์œ ํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ๊ธฐ๋ณธ ์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ์˜ ๊ธฐ๋Šฅ์„ ๊ฐœ๋ณ„ ํด๋ž˜์Šค์™€ ๊ตฌ์กฐ์ฒด์™€ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์—ฌ ์•ฑ ์ฝ”๋“œ์—์„œ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•จ

 

ํ”„๋กœํผํ‹ฐ ๋ž˜ํผ ๊ตฌํ˜„

@propertyWrapper
struct Tenfold {
    private(set) var num: Int = 0
    
    var wrappedValue: Int {
        get { num }
        set { num = newValue * 10 }
    }
    
    init(wrappedValue value: Int) {
        self.wrappedValue = value
    }
}
  • @propertyWrapper ์ง€์‹œ์ž๋ฅผ ์ด์šฉํ•˜์—ฌ ์„ ์–ธ
  • ํด๋ž˜์Šค๋‚˜ ๊ตฌ์กฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„ ๊ฐ€๋Šฅ
  • getter์™€ setter๊ฐ€ ํฌํ•จ๋œ wrappedValue ํ”„๋กœํผํ‹ฐ๋ฅผ ํฌํ•จํ•ด์•ผ ํ•จ
    • ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๊ณ  ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌ
  • initializer์—์„œ ์ธ์ž๋ฅผ ๋ฐ›์„ ๋•Œ wrappedValue๋กœ ๋ฐ›์•„์•ผ ํ•จ
struct Score {
    @Tenfold var kor: Int
    @Tenfold var eng: Int
}

์‚ฌ์šฉ์‹œ ๋ณ€์ˆ˜ ์„ ์–ธ ์•ž์— @๊ธฐํ˜ธ + ํ”„๋กœํผํ‹ฐ ๋ž˜ํผ ์ด๋ฆ„์„ ์ง€์‹œ์ž๋กœ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ™์—ฌ์ค€๋‹ค.

let score = Score(kor: 9, eng: 10)
print(score.kor)
// 90

 

 

์ฐธ๊ณ  ์‚ฌ์ดํŠธ ๋ฐ ๋„์„œ

ํ•ต์‹ฌ๋งŒ ๊ณจ๋ผ ๋ฐฐ์šฐ๋Š” SwiftUI ๊ธฐ๋ฐ˜์˜ iOS ํ”„๋กœ๊ทธ๋ž˜๋ฐ