<!--
{
  "availability" : [
    "iOS: 4.0.0 -",
    "iPadOS: 4.0.0 -",
    "macCatalyst: 13.0.0 -",
    "macOS: 10.15.0 -",
    "visionOS: 1.0.0 -",
    "watchOS: 2.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "CoreMotion",
  "identifier" : "/documentation/CoreMotion/CMGyroHandler",
  "metadataVersion" : "0.1.0",
  "role" : "Type Alias",
  "symbol" : {
    "kind" : "Type Alias",
    "modules" : [
      "Core Motion"
    ],
    "preciseIdentifier" : "c:@T@CMGyroHandler"
  },
  "title" : "CMGyroHandler"
}
-->

# CMGyroHandler

The type of block callback for handling gyroscope data.

```
typealias CMGyroHandler = (CMGyroData?, (any Error)?) -> Void
```

## Discussion

Blocks of type `CMGyroHandler` are called when there is gyroscope data to process. You pass the block into [`startGyroUpdates(to:withHandler:)`](/documentation/CoreMotion/CMMotionManager/startGyroUpdates(to:withHandler:)) as the second argument. Blocks of this type return no value but take two arguments:

- `gyroData`: An object that encapsulates a [`CMRotationRate`](/documentation/CoreMotion/CMRotationRate) structure with fields holding rotation-rate values for the three axes of movement.
- `error`: An error object representing an error encountered in providing gyroscope data. If an error occurs, you should stop gyroscope updates and inform the user of the problem. If there is no error, this argument is `nil`. Core Motion errors are of the [`CMErrorDomain`](/documentation/CoreMotion/CMErrorDomain) domain and the [`CMError`](/documentation/CoreMotion/CMError) type.

---

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)