Компас отсутствует в списке аппаратных взаимодействий, поддерживаемых симулятором, и CLLocationManager headingAvailable сообщает, что он недоступен на симуляторе.
Также в этом документе:
http://developer.apple.com/library/ios/#documentation/CoreLocation/Reference/CLLocationManager_Class/CLLocationManager/CLLocationManager.html
Некоторые службы определения местоположения требуют наличия определенного оборудования на
данное устройство. Например, информация о заголовке доступна только
для устройств, которые содержат аппаратный компас. Этот класс определяет
несколько методов, которые вы можете использовать, чтобы определить, какие услуги
в настоящее время доступно.
В частности, CLLocationManager имеет это свойство класса для проверки доступности компаса:
+ (BOOL)headingAvailable
Если я запускаю это под симулятором:
NSLog(@"headingAvailable: %d", (int)[CLLocationManager headingAvailable]);
Выходы:
2011-11-08 22:38:26.873 Craplet[39975:b603] headingAvailable: 0