2021. 12. 18. 02:21ㆍProgramming/iOS_Swift
프로퍼티 감시자란?
어떤 저장프로퍼티와 부모클래스로부터 상속받은 저장프로퍼티, 연산프로퍼티에 새로운 값이 할당될 때, 그러한 변화들을 관찰하고 호출(respond)하는 역할을 수행하는 것이다.
프로퍼티 감시자의 특징
1. 프로퍼티의 값이 변경될때마다 호출됨.(~~~~called every time a property's value is set.)
2. 새로운 값이 기존의 값과 같더라도 호출됨.(~~~~even if the new value is the same as the property current value.)
3. 지연저장프로퍼티에는 감시자를 넣을 수 없음.(~~~~except for lazy stored properties.)
3. 부모클래스로부터 상속받은 저장프로퍼티, 연산프로퍼티에도 넣을 수 있음.
4. 프로퍼티 감시자의 메서드는 willSet과 didSet 두 가지가 존재함.
왜 쓸까?
1. 코드의 반복을 줄일 수 있다.
예를 들어, 어떤 프로퍼티의 값이 변할 때마다 테이블뷰를 리로딩 해줘야 하는 상황이 있다고 가정해보자. 감시자를 쓰지 않는다면 해당 프로퍼티의 값이 변하는 곳마다 테이블뷰 reloadData를 추가해줘야 한다. 즉, 불필요한 코드 낭비가 발생할 수 있다. 이럴 때, 감시자를 활용한다면 didSet메서드에 코드 한 줄이면 해결할 수 있다.
2. 직관적이고 코드의 흐름을 이해하기 편하다.
1번의 연장선으로, 여기저기 흩뿌려진 반복되는 코드가 프로퍼티 감시자 메서드에 묶여있다면, 코드를 이해하는 데에 용이해진다. '이 저장 프로퍼티의 값이 바뀌면 저런 메서드가 바로 호출되는구나' 이런 식으로, 또 반복되던 코드가 있던 자리의 코드들을 볼 때도 불필요하던 코드가 빠졌으니 좀 더 유기적으로 이해할 수 있게된다!
** 왜 쓸까? 부분은 현재까지 제가 느낀 사견이기 때문에, 틀릴 수도 있습니다. 내용이 잘못됐다면 언제든 지적해주세요!
'Programming > iOS_Swift' 카테고리의 다른 글
[iOS_Swift] 강한참조와 약한참조 + 참조타입, ARC (0) | 2021.12.23 |
---|---|
[iOS] 누락된 Crashlytics dsym파일 로컬머신에서 찾기[SPM] (0) | 2021.12.18 |
[iOS_Swift] 클로저(2) - 기본 클로저 (0) | 2021.11.03 |
[iOS_Swift] 클로저(1) - 1급 객체(First-class Citizen) (0) | 2021.10.25 |
[iOS_Swift] guard, guard let문 (0) | 2021.10.20 |