NSKeyValueObserving
다른 객체의 특정 속성의 변경이 있을 때 알림을 받기 위해서 객체가 채택하는 비공식적인 프로토콜
원문 출처 https://developer.apple.com/documentation/foundation/notifications/nskeyvalueobserving
개요
옵저버는 객체의 단순 속성과, 일대일 관계, 일대 다 관계를 포함한 객체의 모든 프로퍼티를 관찰할 수 있게 해줍니다. 일대 다 관계의 Observer는 변경 유형뿐만 아니라 변경과 관련된 객체에 대해서도 통지를 받습니다.
NSObject는 KeyValueObserving 프로토콜의 구현을 제공함으로써 모든 객체에 자동 관찰 기능을 추가합니다. 자동 관찰 기능을 비활성화시킨 다음 이 프로토콜의 메서드를 사용하여 더 개선된 notification을 수동으로 구현할 수 있습니다.
주제
변경 노티피케이션
func observeValue(forKeyPath: String?, of: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) 관찰 대상 객체에 대한 특정 key path의 값이 변경된 경우 Observer 객체에게 통보합니다.
Observer 등록
func addObserver(NSObject, forKeyPath: String, options: NSKeyValueObservingOptions = [], context: UnsafeMutableRawPointer?) Observer 객체로 등록해서 이 메세지를 수신하는 객체와 관련된 key path에 대한 KVO notification을 받도록 합니다.
func removeObserver(NSObject, forKeyPath: String)
Observer 객체가 특정 key path와 관련된 변경 메세지를 더 이상 받지 않도록 합니다.
func removeObserver(NSObject, forKeyPath: String, context: UnsafeMutableRawPointer?)
주어진 context 하에서 Observer 객체가 특정 key path와 관련된 변경 메세지를 더 이상 받지 않도록 합니다. (역자 주: context의 역할에 대한 stackoverflow의 설명)
Notifying Observers of Changes
func willChangeValue(forKey: String) Observer 객체에게
forKey:
에 해당하는 프로퍼티가 곧 변경될 것임을 알립니다.func didChangeValue(forKey: String)
Observer 객체에게
forKey:
에 해당하는 프로퍼티가 방금 변경되었음을 알립니다.func willChange(NSKeyValueChange, valuesAt: IndexSet, forKey: String)
Informs the observed object that the specified change is about to be executed at given indexes for a specified ordered to-many relationship.
func didChange(NSKeyValueChange, valuesAt: IndexSet, forKey: String) Informs the observed object that the specified change has occurred on the indexes for a specified ordered to-many relationship.
func willChangeValue(forKey: String, withSetMutation: NSKeyValueSetMutationKind, using: Set)
Informs the observed object that the specified change is about to be made to a specified unordered to-many relationship.
func didChangeValue(forKey: String, withSetMutation: NSKeyValueSetMutationKind, using: Set)
Informs the observed object that the specified change was made to a specified unordered to-many relationship.
Observing Customization
class func automaticallyNotifiesObservers(forKey: String) -> Bool
Observer 객체가
forKey:
를 자동 key-value observing(KVO) 하고 있다면 true를 반환합니다.class func keyPathsForValuesAffectingValue(forKey: String) -> Set
Returns a set of key paths for properties whose values affect the value of the specified key.
protocol NSKeyValueObservingCustomization
var observationInfo: UnsafeMutableRawPointer?
Returns a pointer that identifies information about all of the observers that are registered with the observed object.
상수
class NSKeyValueObservation
struct NSKeyValueObservedChange
enum NSKeyValueChange 관찰 가능한 변경 유형들
struct NSKeyValueObservingOptions The values that can be returned in a change dictionary.
struct NSKeyValueChangeKey
The keys that can appear in the change dictionary.
enum NSKeyValueSetMutationKind
The kinds of mutation that you can make to an unordered collection.
같이 보기
관련 문서
Last updated