<!--
{
  "availability" : [
    "iOS: 3.0.0 -",
    "iPadOS: 3.0.0 -",
    "macCatalyst: 13.1.0 -",
    "macOS: 10.15.0 -",
    "watchOS: 2.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "CoreLocation",
  "identifier" : "/documentation/CoreLocation/CLLocationManagerDelegate/locationManager(_:didUpdateHeading:)",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Method",
  "symbol" : {
    "kind" : "Instance Method",
    "modules" : [
      "Core Location"
    ],
    "preciseIdentifier" : "c:objc(pl)CLLocationManagerDelegate(im)locationManager:didUpdateHeading:"
  },
  "title" : "locationManager(_:didUpdateHeading:)"
}
-->

# locationManager(_:didUpdateHeading:)

Tells the delegate that the location manager received updated heading information.

```
optional func locationManager(_ manager: CLLocationManager, didUpdateHeading newHeading: CLHeading)
```

## Parameters

`manager`

The location manager object that generated the update event.

`newHeading`

The new heading data.

## Discussion

Implementation of this method is optional but expected if you start heading updates using the [`startUpdatingHeading()`](/documentation/CoreLocation/CLLocationManager/startUpdatingHeading()) method.

The location manager object calls this method after you initially start the heading service. Subsequent events are delivered when the previously reported value changes by more than the value specified in the [`headingFilter`](/documentation/CoreLocation/CLLocationManager/headingFilter) property of the location manager object.

---

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)