Skip to content

Latest commit

 

History

History
41 lines (28 loc) · 1.3 KB

observe(_:options:changeHandler).md

File metadata and controls

41 lines (28 loc) · 1.3 KB

observe(_:options:changeHandler)

  • NSKeyValueObservation 반환. 일종의 관찰자.
  • 이렇게 반환된 관찰자는 반드시 저장하고 있어야 한다. 저장을 하지 않는다면 해당 코드는 호출되지 않는다.
  • KeyPath를 \.property.property 형식으로 관찰하고자 하는 프로퍼티에 접근 가능
  • options 파라미터로 관찰할 변화의 상태들을 넣어줄 수 있음
  • NSKeyValueObservation 담고 있는 객체가 사라지면 observing 자동 중단
@IBOutlet weak var myView: UIView!
@IBOutlet weak var myButton: UIButton!

var observation : NSKeyValueObservation?

observation = myButton.observe(\.isHighlighted, options: [.new], changeHandler: { _, change in
    if let isHighlighted = change.newValue {
        myView.backgroundColor = isHighlighted ? .red : .blue
    }
})

여러개 있을때는 이런식으로 저장

var observations : [NSKeyValueObservation] = []

let observation = myButton.observe(\.isHighlighted, options: [.new], changeHandler: { [weak self] _, change in
    if let isHighlighted = change.newValue {
        self?.myView.backgroundColor = isHighlighted ? .red : .blue
    }
})

observations.append(observation)

참고