ホームボタンを押してアプリをバックグラウンドにしてから、デバイスの向きを変更してアプリをフォアグラウンドにすると、[UIDevice currentDevice].orientation で以前のデバイスの向きの値が取得されます。
たとえば、デバイスをデフォルトの向きで保持し、アプリをバックグラウンドにして、デバイスを上下逆さまの向きに回転させてから、アプリをフォアグラウンドに移動します。deviceOrientation は、照会時にデフォルトのままです。しばらくすると、beginDeviceOrientationEvents のリスナーが呼び出され、正しい値が使用可能になります。
アプリの再起動時に deviceOrientation の正しい値を取得する最初の場所はどこですか?