マップビューのサブビューを持つビューがあります。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;
}