---
title: "addObserver(_:forKeyPath:options:context:)"
framework: objectivec
role: symbol
role_heading: Instance Method
path: "objectivec/nsobject-swift.class/addobserver(_:forkeypath:options:context:)"
---

# addObserver(_:forKeyPath:options:context:)

Registers the observer object to receive KVO notifications for the key path relative to the object receiving this message.

## Declaration

```swift
func addObserver(_ observer: NSObject, forKeyPath keyPath: String, options: NSKeyValueObservingOptions = [], context: UnsafeMutableRawPointer?)
```

## Parameters

- `observer`: The object to register for KVO notifications. The observer must implement the key-value observing method doc://com.apple.objectivec/documentation/ObjectiveC/NSObject-swift.class/observeValue(forKeyPath:of:change:context:).
- `keyPath`: The key path, relative to the object receiving this message, of the property to observe. This value must not be nil.
- `options`: A combination of the NSKeyValueObservingOptions values that specifies what is included in observation notifications. For possible values, see doc://com.apple.documentation/documentation/Foundation/NSKeyValueObservingOptions.
- `context`: Arbitrary data that is passed to observer in doc://com.apple.objectivec/documentation/ObjectiveC/NSObject-swift.class/observeValue(forKeyPath:of:change:context:).

## Discussion

Discussion Neither the object receiving this message, nor observer, are retained. An object that calls this method must also eventually call either the removeObserver(_:forKeyPath:) or removeObserver(_:forKeyPath:context:) method to unregister the observer when participating in KVO.

## See Also

### Registering for Observation

- [removeObserver(_:forKeyPath:)](objectivec/nsobject-swift.class/removeobserver(_:forkeypath:).md)
- [removeObserver(_:forKeyPath:context:)](objectivec/nsobject-swift.class/removeobserver(_:forkeypath:context:).md)
