willSet
, didSet
에 대해 알아보자.
willSet
, didSet
을 Property Observer(프로퍼티 감시자)라고 한다.
프로퍼티 감시자는 프로퍼티의 값이 새로 할당될때마다 호출된다.
프로퍼티의 값이 변할때 맞춰 적절한 작업 수행이 가능하다.
변경되는 값이 현재와 동일한 값이어도 호출된다.
지연 저장 프로퍼티에는 사용 불가하다.
override
된 저장/연산 프로퍼티에 사용 가능하다.
override
된 연산 프로퍼티에는 프로퍼티 감시자가 필요도 없고, 지정 불가능하다.
(연산 프로퍼티의 getter
, setter
로 구현할 수 있으므로 프로퍼티 감시자가 필요없다.)
프로퍼티 감시자인 willSet
, didSet
에 대해 알아보자.
프로퍼티 값이 변경되기 직전에 호출된다.
willSet
의 매개변수는 1개이다.
willSet
의 매개변수는 변경될 값(newValue)이다.
프로퍼티의 값이 변경된 직후 호출된다.
didSet
의 매개변수는 1개이다.
didSet
의 매개변수는 변경되기 전 값(oldValue)이다.
willSet
이 호출되고 didSet
이 호출되는걸 확인할 수 있다.
willSet
의 매개변수 newValue
에는 새롭게 할당된 값이
didSet
의 매개변수 oldValue
에는 이전에 할당되어 있던 값이 출력되는걸 확인할 수 있다.
프로퍼티 감시자가 있는 프로퍼티를 입출력 매개변수의 전달인자로 전달하면 항상
willSet
,didSet
이 호출된다.
함수 내부에서 값이 변경되지 않아도 함수가 종료되는 시점에 값을 다시 쓰기 때문이다.
프로퍼티에 대해 알아보는 김에 프로퍼티 감시자에 대해서도 알아봤다.
willSet
이나 didSet
을 사용해 data가 변경될때마다 화면을 업데이트할때 많이 사용했다.
그럼 이만👋