In the CLLocationMananager location documentation contains
The value of this property is nil if location data has never been retrieved.
This means that you need to call [self.locationManager startUpdatingLocation] to get the correct location. But there are things you need to do before it works.
First of all, you will need to request authorization by calling [self.locationManager requestAlwaysAuthorization] .
When permission is approved or denied, the delegate method is called locationManager:didChangeAuthorizationStatus:
If the authorization status is kCLAuthorizationStatusAuthorizedAlways , you can call [self.locationManager startUpdatingLocation] .
Then, anytime the location is updated, the delegate method locationManager:didUpdateLocations: will be called so that you can update your interface with the new location.
source share