<!--
{
  "availability" : [
    "iOS: 12.0.0 -",
    "iPadOS: 12.0.0 -",
    "macCatalyst: -",
    "macOS: 10.14.0 -",
    "tvOS: 12.0.0 -",
    "visionOS: -",
    "watchOS: 5.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "os",
  "identifier" : "/documentation/os/OSSignpostID",
  "metadataVersion" : "0.1.0",
  "role" : "Structure",
  "symbol" : {
    "kind" : "Structure",
    "modules" : [
      "os"
    ],
    "preciseIdentifier" : "s:2os12OSSignpostIDV"
  },
  "title" : "OSSignpostID"
}
-->

# OSSignpostID

An identifier that disambiguates signposted intervals.

```
struct OSSignpostID
```

## Overview

Multiple intervals that have matching names, subsystems, and categories, and that exist in the same scope can be in-flight simultaneously. To match a pair of interval calls, you need to identify each interval with a unique signpost identifier. Use the first strategy in the list below that matches your use case:

- If identical intervals can never overlap, use the [`exclusive`](/documentation/os/OSSignpostID/exclusive) signpost ID.
- If you have data that uniquely identifies each instance of the measured task, create a signpost ID using the [`init(_:)`](/documentation/os/OSSignpostID/init(_:)) method. The value you provide must not match that of any of the system-defined signpost IDs.
- If you have an object that uniquely identifies a pair of interval calls, such as the object you’re measuring, create a signpost ID using the [`makeSignpostID(from:)`](/documentation/os/OSSignposter/makeSignpostID(from:)) method. Don’t use this method for signposts that cross process boundaries.
- Otherwise, create a signpost ID using the [`makeSignpostID()`](/documentation/os/OSSignposter/makeSignpostID()) method.

## Topics

### Getting Signpost Identifiers

[`exclusive`](/documentation/os/OSSignpostID/exclusive)

A signpost identifier that indicates no overlap among different signpost time intervals.

[`invalid`](/documentation/os/OSSignpostID/invalid)

A signpost identifier that indicates an error.

[`null`](/documentation/os/OSSignpostID/null)

A signpost identifier that indicates a disabled signpost.

### Creating a Signpost Identifier

[`init(_:)`](/documentation/os/OSSignpostID/init(_:))

Creates a signpost ID from an arbitrary 64-bit integer value.

[`init(log:)`](/documentation/os/OSSignpostID/init(log:))

Creates a signpost ID for the specified log.

[`init(log:object:)`](/documentation/os/OSSignpostID/init(log:object:))

Creates a signpost ID and associates it with the specified object.

### Getting an Identifier’s Raw Value

[`rawValue`](/documentation/os/OSSignpostID/rawValue)

The signpost ID’s raw value.

## Relationships

### Conforms To

[`Equatable`](/documentation/Swift/Equatable)

[`Sendable`](/documentation/Swift/Sendable)

[`Comparable`](/documentation/Swift/Comparable)

[`SendableMetatype`](/documentation/Swift/SendableMetatype)

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)