[ios] Key-Value Observing in Swift4
오늘은 Key-Value Observing, KVO에 대해 간단히 알아보도록 하겠습니다. Swift4로 넘어오면서 KVO의 방식에도 변화가 있었습니다.
Swift4 이전에는 Observer와 Action 메소드를 따로 각각 별개로 정의해주었어야 했는데 Swift4의 observe(_:options:changeHandler)
메소드의 등장으로 Observer와 Action을 동시에 정의해줄 수 있게 되었습니다. 또한 기존의 KeyPath를 문자열로 입력하던 것과 다르게 프로퍼티로 접근이 가능해졌습니다.
사실 이외에도 context
를 사용하지 않는 점 등 여러 변화가 있으나 제가 느끼기에 가장 큰 변화는 바로 가독성입니다. 이전의 KVO 방식은 Objective-C에서 사용하던 방법을 Swift에서 억지로 사용한 느낌이 없지 않아 있었고 가독성 또한 굉장히 떨어졌습니다. 하지만 observe(_:options:changeHandler)
의 등장으로 보다 편리하게 값의 변화를 관찰할 수 있게 되었고 사용하기 굉장히 편리해졌습니다.
사실 Swift에는 willSet
, didSet
도 존재하지만 이 둘은 정의부에서의 관찰이었다면 KVO는 정의부 바깥에서 관찰 행위를 해주는 방법입니다. 그렇기 때문에 좀 더 느슨한 구조를 설계할 수 있습니다.
그럼 바로 코드를 통해 살펴보도록 하겠습니다. 먼저 값의 변화를 관찰할 객체를 만들어보도록 하겠습니다.