Индикатор службы определения местоположения в строке состояния по-прежнему отображается даже после явного вызова stopUpdatingLocation в CLLocationManager

У меня есть представление с подвидом представления карты. Я использовал CLLocationManager, чтобы получить текущее местоположение и показать его на карте. Затем, когда представление вот-вот закроется, я делаю следующее

_mapView.delegate = nil;
_mapView = nil;

[_locationManager stopUpdatingLocation];
_locationManager.delegate = nil;
_locationManager = nil;

Но индикатор службы определения местоположения (GPS) в строке состояния по-прежнему остается и не исчезает. И когда приложение переходит в фоновый режим, а затем возвращается на передний план, оно будет ждать появления индикатора в строке состояния, прежде чем станет активным.

Есть ли причина, по которой индикатор все еще там?

РЕДАКТИРОВАТЬ - ниже показано, как инициализируется и запускается CLLocationManager

    if (_locationManager == nil) {
        _locationManager = [[CLLocationManager alloc] init];
        _locationManager.delegate = self;
        _locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
        _locationManager.distanceFilter = kCLDistanceFilterNone;

        [_locationManager startUpdatingLocation];
    }  

, а ниже показано, как я его остановил

    if (_locationManager != nil) {
        [_locationManager stopUpdatingLocation];
        _locationManager.delegate = nil;
        _locationManager = nil;
    }
5
задан tom 13 June 2012 в 19:40
поделиться