2011-07-11 2 views
2

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

[locationManager stopUpdatingLocation]; 
locationManager.delegate = nil; 

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

благодарит заранее.

+1

Действительно ли 'locationManager' является экземпляром CLLocationManager или возможно, что это' nil'? Пожалуйста, проверьте с помощью отладчика или 'NSLog (@"% @ ", locationManager);'. Потому что, если это 'nil', тогда вы не получите ошибку, но просто ничего не произойдет. – DarkDust

+0

Спасибо DarkDust - я нашел решения, у меня появилась идея из вашего комментария .... –

+0

Где я звонил менеджеру местоположения, значения были NULL, и из-за этого я не смог остановить обновление служб местоположения, я решил, что и вызвал эту функцию в методе didUpdateToLocation: и теперь работает точно. –

ответ

-2

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

-(void)viewDidLoad 

{ firstTime = TRUE; }

- (Недействительными) locationManager: (CLLocationManager *) менеджер didUpdateToLocation: (CLLocation *) newLocation fromLocation :(CLLocation *) oldLocation {

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

}

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

+0

1) Пожалуйста, отформатируйте свое сообщение. 2) Если вы используете переменную экземпляра, то по умолчанию используется значение «НЕТ», которое вы должны использовать, поэтому вы должны проверить «НЕТ» (или «ЛОЖЬ») вместо «ДА» (или «ИСТИНА»). Имя переменной должно отражать это. В противном случае вам придется инициализировать переменную в 'init'. 3) В вашем 'if', вы (случайно?) Выполнили задание вместо сравнения, этот термин всегда будет истинным. – DarkDust

0

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

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

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

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

Смежные вопросы