---
title: "CFRunLoopObserverCreateWithHandler(_:_:_:_:_:)"
framework: corefoundation
role: symbol
role_heading: Function
path: "corefoundation/cfrunloopobservercreatewithhandler(_:_:_:_:_:)"
---

# CFRunLoopObserverCreateWithHandler(_:_:_:_:_:)

Creates a CFRunLoopObserver object with a block-based handler.

## Declaration

```swift
func CFRunLoopObserverCreateWithHandler(_ allocator: CFAllocator!, _ activities: CFOptionFlags, _ repeats: Bool, _ order: CFIndex, _ block: ((CFRunLoopObserver?, CFRunLoopActivity) -> Void)!) -> CFRunLoopObserver!
```

## Parameters

- `allocator`: The allocator to use to allocate memory for the new object. Pass NULL or doc://com.apple.corefoundation/documentation/CoreFoundation/kCFAllocatorDefault to use the current default allocator.
- `activities`: Set of flags identifying the activity stages of the run loop during which the observer is called. See doc://com.apple.corefoundation/documentation/CoreFoundation/CFRunLoopActivityfor the list of stages. To have the observer called at multiple stages in the run loop, combine the doc://com.apple.corefoundation/documentation/CoreFoundation/CFRunLoopActivity values using the bitwise-OR operator.
- `repeats`: A flag identifying whether the observer is called only once or every time through the run loop. If repeats is false, the observer is invalidated after it is called once, even if the observer was scheduled to be called at multiple stages within the run loop.
- `order`: A priority index indicating the order in which run loop observers are processed. When multiple run loop observers are scheduled in the same activity stage in a given run loop mode, the observers are processed in increasing order of this parameter. Pass 0 unless there is a reason to do otherwise.
- `block`: The block invoked when the observer runs. The block takes two arguments:

## Return Value

Return Value The new CFRunLoopObserver object. Ownership follows the Create Rule described in Ownership Policy.

## Discussion

Discussion The run loop observer is not automatically added to a run loop. To add the observer to a run loop, use CFRunLoopAddObserver(_:_:_:). An observer can be registered to only one run loop, although it can be added to multiple run loop modes within that run loop.

## See Also

### CFRunLoopObserver Miscellaneous Functions

- [CFRunLoopObserverCreate(_:_:_:_:_:_:)](corefoundation/cfrunloopobservercreate(_:_:_:_:_:_:).md)
- [CFRunLoopObserverDoesRepeat(_:)](corefoundation/cfrunloopobserverdoesrepeat(_:).md)
- [CFRunLoopObserverGetActivities(_:)](corefoundation/cfrunloopobservergetactivities(_:).md)
- [CFRunLoopObserverGetContext(_:_:)](corefoundation/cfrunloopobservergetcontext(_:_:).md)
- [CFRunLoopObserverGetOrder(_:)](corefoundation/cfrunloopobservergetorder(_:).md)
- [CFRunLoopObserverGetTypeID()](corefoundation/cfrunloopobservergettypeid().md)
- [CFRunLoopObserverInvalidate(_:)](corefoundation/cfrunloopobserverinvalidate(_:).md)
- [CFRunLoopObserverIsValid(_:)](corefoundation/cfrunloopobserverisvalid(_:).md)
