2010-05-31 5 views
3

Если пользователь имеет услуги определения местоположения, я назначить свой RootController в качестве делегата:Как отключить службы определения местоположения?

appDelegate.clLocationManager.delegate = self; 

где AppDelegate является экземпляром моего приложения делегата, который где у меня есть экземпляр служб определения местоположения. clLocationManager - это экземпляр CLLocationManager. Если я обнаруживаю, что пользователь находится за пределами определенного региона, я хочу отключить делегатов службы определения местоположения. Я делаю это:

appDelegate.clLocationManager.delegate = nil; 

Но этот метод до сих пор пожары:

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

Есть еще один способ отключить службы определения местоположения или по крайней мере сохранить свои методы от стрельбы?

ответ

2

Да, вы должны сказать ему, чтобы остановить обновление местоположения:

[appDelegate.clLocationManager stopUpdatingLocation]; 

После этого вы можете выпустить его.

Для получения более подробной информации см. the documentation.

+2

Спасибо. Я пробовал это, но didUpdateToLocation срабатывает еще три раза после вызова stopUpdatingLocation. Не следует ли немедленно прекратить обновление? – 4thSpace

+0

Чтобы он работал, мне пришлось освободить, а затем сразу же назначить менеджера местоположений. – 4thSpace

+2

@ 4thSpace, не могли бы вы дать код о том, как вы его исправили? Честно говоря, я думаю, что Apple приложила немало времени с этим. Я не могу заставить службы определения местоположения остановиться вообще, я пробовал все. – fuzz

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