остановить обновление местоположения на iPhone - PullRequest
2 голосов
/ 11 июля 2011

Я использую следующий код для остановки обновления местоположения

[locationManager stopUpdatingLocation];
locationManager.delegate = nil;

Но все же после вызова функции вещи службы определения местоположения не останавливаются и все еще пытаются найти местоположение, может ли кто-нибудь помочь мне в том, что я сделал неправильно.

спасибо заранее.

Ответы [ 3 ]

0 голосов
/ 11 июля 2011

Обычно код, который вы использовали [locationManager stopUpdatingLocation]; должно работать для остановки обновления местоположения. Но если это не сработает, у вас может быть одно альтернативное решение:

-(void)viewDidLoad

{ firstTime = TRUE; }

- (void) locationManager: (CLLocationManager *) manager didUpdateToLocation: (CLLocation *) newLocation fromLocation: (CLLocation *) oldLocation {

if(firstTime = TRUE)
{
    firstTime = FALSE;
    current_Latitude=newLocation.coordinate.latitude;
    current_Longitude= newLocation.coordinate.longitude;
}

}

Здесь вы можете использовать одну переменную BOOL, чтобы проверить, обновили ли вы местоположение или нет.

0 голосов
/ 01 марта 2012

У меня была такая же проблема, когда не прекращалось обновление местоположения.Я не пытался обнулить делегата, потому что проблема заключалась в том, что в моем методе locationManager: didUpdateToLocation: fromLocation: другой метод вызывался перед тем, как фактически остановить обновление, я вызвал свой собственный метод (загрузка объектов с сервера).Это было нормально, пока мне не пришлось загружать слишком много.Я предполагаю, что дело в том, что он пытается загрузить их слишком долго, чтобы «didupdatelocation» вызывался снова и снова.

Я думал о двух решениях для этого (по крайней мере, для меня):

  1. Делать вещи ПОСЛЕ остановки менеджера.- По какой-то причине это не сработало, у меня все еще было несколько вызовов.
  2. Делайте вещи асинхронно.- Мне показалось, что это хорошо работает.

Надеюсь, это поможет.

0 голосов
/ 11 июля 2011
...