Представление UIDevice об ориентации, по-видимому, доступно только на реальных устройствах. Симулятор, кажется, всегда возвращает 0 здесь, независимо от того, были ли включены уведомления, как предполагают документы. Раздражающе неудобно, но вы идете.
Я считаю, что это нормально работает на реальном устройстве:
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
NSLog(@"orientation: %d", [[UIDevice currentDevice] orientation]);
[[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications];