var myProperty: Int = 100{
didSet(oldVal){
//myProperty의 값이 변경된 직후에 호출, oldVal은 변경 전 myProperty의 값
}
willSet(newVal){
//myProperty의 값이 변경되기 직전에 호출, newVal은 변경 될 새로운 값
}
}
만약 score라는 변수에 따라 현재 점수를 표현해주는 라벨이 있다면,
didSet을 사용하지 않을경우 score값이 변경될때마다
매번 scoreLabel.text = ~~ 를 작성해줘야한다.
ex)
var score = 50
scroeLabel.text = "score : \(score)"
score = 70
scroeLabel.text = "score : \(score)"
score = 65
scroeLabel.text = "score : \(score)"
이런식으로 같은 문장을 값이 변경될때마다 계속 반복해서 써주어야 하지만,
만약 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 변수로 변경후의 값을 불러 올 수있다.