willSet, didSet

이원희·2020년 12월 27일
1

 🐧 Swift

목록 보기
10/32
post-thumbnail

willSet, didSet에 대해 알아보자.

Property Observer

willSet, didSetProperty Observer(프로퍼티 감시자)라고 한다.

프로퍼티 감시자는 프로퍼티의 값이 새로 할당될때마다 호출된다.
프로퍼티의 값이 변할때 맞춰 적절한 작업 수행이 가능하다.

변경되는 값이 현재와 동일한 값이어도 호출된다.
지연 저장 프로퍼티에는 사용 불가하다.

override저장/연산 프로퍼티에 사용 가능하다.
override연산 프로퍼티에는 프로퍼티 감시자가 필요도 없고, 지정 불가능하다.
(연산 프로퍼티getter, setter로 구현할 수 있으므로 프로퍼티 감시자가 필요없다.)

willSet, didSet

프로퍼티 감시자willSet, didSet에 대해 알아보자.

willSet

프로퍼티 값이 변경되기 직전에 호출된다.
willSet의 매개변수는 1개이다.
willSet의 매개변수는 변경될 값(newValue)이다.

didSet

프로퍼티의 값이 변경된 직후 호출된다.
didSet의 매개변수는 1개이다.
didSet의 매개변수는 변경되기 전 값(oldValue)이다.


코드로 확인해보자

willSet이 호출되고 didSet이 호출되는걸 확인할 수 있다.

willSet의 매개변수 newValue에는 새롭게 할당된 값
didSet의 매개변수 oldValue에는 이전에 할당되어 있던 값이 출력되는걸 확인할 수 있다.

프로퍼티 감시자가 있는 프로퍼티를 입출력 매개변수의 전달인자로 전달하면 항상 willSet, didSet이 호출된다.
함수 내부에서 값이 변경되지 않아도 함수가 종료되는 시점에 값을 다시 쓰기 때문이다.


마무리

프로퍼티에 대해 알아보는 김에 프로퍼티 감시자에 대해서도 알아봤다.
willSet이나 didSet을 사용해 data가 변경될때마다 화면을 업데이트할때 많이 사용했다.
그럼 이만👋

0개의 댓글