Contents

beginAnimationInterval(_:id:)

Begins a signposted interval for measuring an animation.

Declaration

func beginAnimationInterval(_ name: StaticString, id: OSSignpostID = .exclusive) -> OSSignpostIntervalState

Parameters

  • name:

    The signpost’s name.

  • id:

    The signpost’s identifier. The default value is Exclusive.

Return Value

The interval state that the signposter derives from the specified id parameter.

Discussion

The signposter uses a signpost ID to pair the beginning and the end of a signposted interval, which is necessary because multiple intervals with the same configuration and scope can be in-flight simultaneously. If only one interval with a specific configuration can execute at any particular time, use exclusive for the id parameter. Otherwise, use the makeSignpostID() and makeSignpostID(from:) methods to generate a signpost identifier.

To end a signposted interval, pass the return value to one of the endInterval(_:_:) or endInterval(_:_:_:) methods. If you don’t have access to the returned interval state when you want to end the signposted interval, recreate it by passing the same signpost ID to the beginState(id:) method.

If you need to pass the returned interval state across process boundaries, you must encode it first. For more information, see OSSignpostIntervalState.

The following example demonstrates how to use a signpost ID and interval state to signpost the beginning and the end of an interval that measures an animation:

// Create a signposter that uses the default subsystem.
let signposter = OSSignposter()
        
// Generate a signpost ID to associate with the signposted interval.
let signpostID = signposter.makeSignpostID()
        
// Create a name that the signposter uses, along with the 
// signpost ID, to disambiguate the begin call and end call. 
// The type must be StaticString.
let name: StaticString = "Animation"
        
// Begin a signposted interval and keep a reference to the
// returned interval state.
let state = signposter.beginAnimationInterval(name, id: signpostID)
        
// Perform the animation that you want to measure.
        
// Use the interval state from the begin call to end the
// corresponding signposted interval.
signposter.endInterval(name, state)

See Also

Starting a Signposted Interval