[ SWIFT ] Key Value Observing

Key-Value Observing의 개념과 방법에 대해 알아본다.

Key-Value Observing은 객체에 옵저버 패턴을 적용하는 하나의 방식이며 아래와 같은 특징이 있다.

  • 옵저빙하고자 하는 객체는 NSObject를 상속받아야 한다.
  • 옵저빙하는 객체에 알람을 등록할 시 식별자는 객체의 KeyPath를 사용한다.
  • 구현해야할 이벤트 핸들러는 NSObject의 observeValue 메소드를 재정의해서 사용한다.

KeyPath는 옵저빙할 객체의 property를 문자열 형태로 표현한 것이다. 예를들어 UIView 인스턴스의 frame값을 옵저빙하고 싶을때 KeyPath는 “instance명.frame”이 되는 것이다. keyPath매크로를 이용해서 #keyPath(instance명.frame)으로 표현할 수도 있다.

KVO를 객체에 적용하는 방법을 아래와 같이 Observer 등록, 이벤트 핸들러 구현 두 단계로 진행된다.

Observer 등록하기

addObserver(self, forKeyPath: #keyPath(self.view.frame), options: [.old, .new], context: nil)

Event Handler등록하기

override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
    if keyPath == #keyPath(self.view.frame) {
        // frame이 변경될 때 하고자 하는 작업
    }
}

© 2017. All rights reserved.

Powered by Hydejack v7.5.0