To unravel this I've spent a bit too much time digging through the Apple docs. There are three ways of obtaining magnetometer data 1/ Core Motion framework CMMotionManagers's CMMagnetometer class 2/ Core Motion framework CMDeviceMotion CMCalibratedMagneticField property 3 / Core Location framework CLLocationManager's CLHeading 1/ supplies 'raw' data from the magnetometer. 2/ and 3/ return 'derived
![In iOS, what is the difference between the Magnetic Field values from the Core Location and Core Motion frameworks?](https://cdn-ak-scissors.b.st-hatena.com/image/square/98d6f053a97a87156775f60757c60865d0f2c47d/height=288;version=1;width=512/https%3A%2F%2Fcdn.sstatic.net%2FSites%2Fstackoverflow%2FImg%2Fapple-touch-icon%402.png%3Fv%3D73d79a89bded)