CLLocationManager no funciona todo el time (iOS 8, Xcode 6)

Básicamente la mitad del time el método delegado

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations; 

no se llama en absoluto. ¡Pero la otra mitad del time funciona perfectamente! Descubrí que suele suceder cuando enciendo Xcode por primera vez después de cerrarlo y abandonarlo, pero después de eso o un par de veces funciona, parece funcionar bien. No estoy 100% seguro si es solo un problema de Xcode o qué, obtendré una licencia de desarrollador pronto, así que veré si funciona bien en un dispositivo real.

A partir de viewDidAppear (intentado en viewDidLoad también, no hace ninguna diferencia), ejecuto un método para iniciar mis cosas de locationManager:

 locationManager = [[CLLocationManager alloc]init]; [locationManager setDelegate:self]; locationManager.distanceFilter = 20.0f; locationManager.desinetworkingAccuracy = kCLLocationAccuracyBest; locationManager.pausesLocationUpdatesAutomatically = NO; if ([locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) [locationManager requestAlwaysAuthorization]; [locationManager startUpdatingLocation]; 

A veces esto funciona, a veces no funciona. Incluso hice un timer para volver a ejecutar esto cada segundo, y esto no funciona.

¿Hay algo más que deba hacer? ¿Hay alguna respuesta a este problema?

Gracias.

 - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations; 

Este método de delegado se invoca solo si hay nuevas ubicaciones disponibles. A veces, los GPS no obtendrán señal de satélite, por lo tanto, no se pueden get ubicaciones. Entonces, en estas situaciones, el método mencionado anteriormente no se activará. Dado que está probando en el simulador, debe cambiar o establecer la location. Creo que funcionará bien en un dispositivo real.

agregar en viewdidappear

 _locamangr = [CLLocationManager new]; _locamangr.delegate = self; // _locamangr.distanceFilter = kCLDistanceFilterNone; _locamangr.desinetworkingAccuracy = kCLLocationAccuracyBest; if ([_locamangr respondsToSelector:@selector(requestAlwaysAuthorization)]) { [_locamangr requestAlwaysAuthorization] ; [_locamangr requestWhenInUseAuthorization]; } [_locamangr startUpdatingLocation]; 

y configurado en infoplist. NSLocationWhenInUseUsageDescription NSLocationAlwaysUsageDescription