| // Copyright (c) 2025, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| #ifndef OBJECTIVE_C_SRC_OBSERVER_H_ |
| #define OBJECTIVE_C_SRC_OBSERVER_H_ |
| |
| #import <Foundation/NSObject.h> |
| #import <Foundation/NSKeyValueObserving.h> |
| |
| /** |
| * Protocol for observing changes to values of objects. |
| */ |
| @protocol Observer<NSObject> |
| @required |
| - (void)observeValueForKeyPath:(NSString *)keyPath |
| ofObject:(id)object |
| change:(NSDictionary<NSKeyValueChangeKey, id> *)change |
| context:(void *)context; |
| @end |
| |
| /** |
| * Represents a single KVO observation. Each observation creates a new |
| * DOBJCObservation, even for the same observer, observed object, and keyPath. |
| */ |
| @interface DOBJCObservation : NSObject |
| - (instancetype)initForKeyPath:(NSString*)keyPath |
| ofObject:(id)object |
| withObserver:(id<Observer>)observer |
| options:(NSKeyValueObservingOptions) options |
| context:(void *)context; |
| - (void)remove; |
| - (void)dealloc; |
| - (void*)debugObserver; |
| @end |
| |
| #endif // OBJECTIVE_C_SRC_OBSERVER_H_ |