[Swift] 프로퍼티 감시자

나는 사과·2021년 2월 16일
0

TIL

목록 보기
1/17

안녕하세요😀
몇 일 사이에 컨디션이 안 좋아서 포스팅을 못했는데 너무 안하는 것보다 최근에 다시 읽고있는 야곰님의 Swift 스위프트 프로그래밍 책을 공부하면서 놓쳤던 부분에 대해서 정리하면서 기억해보려고 합니다!!


프로퍼티 감시자

그래서 처음으로 가져온 파트는 프로퍼티 감시자입니다.
프로퍼티(Property)는 클래스, 구조체, 열거형에서 사용되는 값들을 말합니다.
근데 이 프로퍼티들의 값이 변할 때마다 호출이 돼서 행하고 싶은 작업이 있을 때 프로퍼티 감시자(Property Observer)를 사용해서 작업을 실행 할 수 있습니다.
프로퍼티 감시자는 일반적으로 변수나 상수를 저장하는 저장 프로퍼티에 사용이 가능하며 상속받은 연산 프로퍼티에도 사용이 가능합니다.

프로퍼티 감시자에는 willSetdidSet두 메서드가 존재하는데 어떤 일을 하는지는 이름과 같이

  • willSet : 프로퍼티의 값이 변경되기 전에 호출되어서 변경될 값을 매개변수로 갖는다.
  • didSet : 프로퍼티의 값이 변경된 후 호출되어서 변경되기 전의 값을 매개변수로 갖는다.

여기서 매개변수가 존재한다고 했는데 만약, 매개변수의 이름을 정해주지 않으면 willSet메서드의 매개변수의 값은 newValue, didSet메서드의 매개변수의 값은 oldValue라는 이름을 갖는다.

간단하게 사용한 것을 보면 다음과 같다.

class Person{
	var weight: Int = 80 {
    	willSet {
        	print("이걸 다 먹으면 \(weight)kg에서 \(newValue)kg가 될 것 같아..")
        }
        
        didSet {
        	print("결국 다 먹어서 \(oldvalue)kg에서 \(weight)kg로 변했어..")
        }
        
let chang: Person = Person()
// 출력 -> 이걸 다 먹으면 80kg에서 85kg가 될 것 같아..
chang.weight = 85
// 출력 -> 결국 다 먹어서 80kg에서 85kg로 변했어..

0개의 댓글