didSet, willSet

김준오·2021년 8월 25일
0

Swift

목록 보기
10/10

didSet, willSet 이란?

var myProperty: Int = 100{
   didSet(oldVal){
      //myProperty의 값이 변경된 직후에 호출, oldVal은 변경 전 myProperty의 값
   }
   willSet(newVal){
      //myProperty의 값이 변경되기 직전에 호출, newVal은 변경 될 새로운 값
   }
}

사용상황

만약 score라는 변수에 따라 현재 점수를 표현해주는 라벨이 있다면,
didSet을 사용하지 않을경우 score값이 변경될때마다
매번 scoreLabel.text = ~~ 를 작성해줘야한다.

ex)

didSet 미사용시

var score = 50
scroeLabel.text = "score : \(score)"

score = 70
scroeLabel.text = "score : \(score)"

score = 65
scroeLabel.text = "score : \(score)"

이런식으로 같은 문장을 값이 변경될때마다 계속 반복해서 써주어야 하지만,

만약 didSet을 사용한다면,

didSet 사용시

var score: Int = 50 {
   didSet {
      scoreLabel.text = "my score is: \(score)"
   }
}

값이 변경될때마다 자동으로 적용된다.

이전 점수와 다음 점수 불러오기

var score: Int = 0 {
   didSet(oldVal) {
      print("현재 점수: \(self.score), 이전 점수: \(oldVal)")
   }
   
   willSet(newVal) {
     print("현재 점수: \(self.score), 다음 점수 : \(newVal)")
}

didSet을 통해 oldVal 변수로 변경전 값을 불러 올 수 있고
willSet을 통해 newVal 변수로 변경후의 값을 불러 올 수있다.

profile
jooooon

0개의 댓글