---
title: "CFRunLoopTimerCreateWithHandler(_:_:_:_:_:_:)"
framework: corefoundation
role: symbol
role_heading: Function
path: "corefoundation/cfrunlooptimercreatewithhandler(_:_:_:_:_:_:)"
---

# CFRunLoopTimerCreateWithHandler(_:_:_:_:_:_:)

Creates a new CFRunLoopTimer object with a block-based handler.

## Declaration

```swift
func CFRunLoopTimerCreateWithHandler(_ allocator: CFAllocator!, _ fireDate: CFAbsoluteTime, _ interval: CFTimeInterval, _ flags: CFOptionFlags, _ order: CFIndex, _ block: ((CFRunLoopTimer?) -> Void)!) -> CFRunLoopTimer!
```

## 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.
- `fireDate`: The time at which the timer should first fire. The fine precision (sub-millisecond at most) of the fire date may be adjusted slightly by the timer if there are implementation reasons to do so.
- `interval`: The firing interval of the timer. If 0 or negative, the timer fires once and then is automatically invalidated. The fine precision (sub-millisecond at most) of the interval may be adjusted slightly by the timer if implementation reasons to do so exist.
- `flags`: Currently ignored. Pass 0 for future compatibility.
- `order`: A priority index indicating the order in which run loop timers are processed. Run loop timers currently ignore this parameter. Pass 0.
- `block`: The block invoked when the timer fires. The block takes one argument:

## Return Value

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

## Discussion

Discussion A timer needs to be added to a run loop mode before it will fire. To add the timer to a run loop, use CFRunLoopAddTimer(_:_:_:). A timer can be registered to only one run loop at a time, although it can be in multiple modes within that run loop.

## See Also

### CFRunLoopTimer Miscellaneous Functions

- [CFRunLoopTimerCreate(_:_:_:_:_:_:_:)](corefoundation/cfrunlooptimercreate(_:_:_:_:_:_:_:).md)
- [CFRunLoopTimerDoesRepeat(_:)](corefoundation/cfrunlooptimerdoesrepeat(_:).md)
- [CFRunLoopTimerGetContext(_:_:)](corefoundation/cfrunlooptimergetcontext(_:_:).md)
- [CFRunLoopTimerGetInterval(_:)](corefoundation/cfrunlooptimergetinterval(_:).md)
- [CFRunLoopTimerGetNextFireDate(_:)](corefoundation/cfrunlooptimergetnextfiredate(_:).md)
- [CFRunLoopTimerGetOrder(_:)](corefoundation/cfrunlooptimergetorder(_:).md)
- [CFRunLoopTimerGetTypeID()](corefoundation/cfrunlooptimergettypeid().md)
- [CFRunLoopTimerInvalidate(_:)](corefoundation/cfrunlooptimerinvalidate(_:).md)
- [CFRunLoopTimerIsValid(_:)](corefoundation/cfrunlooptimerisvalid(_:).md)
- [CFRunLoopTimerSetNextFireDate(_:_:)](corefoundation/cfrunlooptimersetnextfiredate(_:_:).md)
