Yes, this is standard behavior. When you start location services, you usually get a series of increasingly accurate CLLocation updates (ie, with a decrease in horizontalAccuracy over time), as the device βwarms upβ. For example, it may start reporting location information that it might already have based on cell towers, but since the GPS chip gets more information with which it can better triangulate your location, it will give you updates. Etc.
If you want to reduce this behavior, you can use a combination of a larger distanceFilter , lower desiredAccuracy or calling stopUpdatingLocation after getting the location that you will geocode.
Right now you are calling stopUpdatingLocation , but you are doing this from an asynchronously called reverseGeocodeLocation closure. This means that more location updates may slip before the reverseGeocodeLocation termination handler is reverseGeocodeLocation . If you call stopUpdatingLocation synchronously (for example, before reverseGeocodeLocation ), you will avoid this behavior.
source share