2010-05-31 6 views
3

Si un utilisateur des services de localisation, je céder mes RootController comme délégué:Comment désactiver les services de localisation?

appDelegate.clLocationManager.delegate = self; 

où appDelegate est une instance de mon délégué de l'application, ce qui est l'endroit où je l'emplacement par exemple des services. clLocationManager est une instance de CLLocationManager. Si je découvre que l'utilisateur se trouve en dehors d'une certaine région, je souhaite désactiver les délégués du service de localisation. Je fais ceci:

appDelegate.clLocationManager.delegate = nil; 

Mais cette méthode tire encore:

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

Y at-il une autre façon de désactiver les services de localisation ou au moins garder ses méthodes de tir?

Répondre

2

Oui, vous avez besoin de lui dire d'arrêter la mise à jour l'emplacement:

[appDelegate.clLocationManager stopUpdatingLocation]; 

Après cela, vous pouvez également le libérer. Pour plus de détails, voir .

+2

Merci. J'ai essayé cela mais didUpdateToLocation se déclenche trois fois de plus après avoir appelé stopUpdatingLocation. Ne devrait-il pas arrêter la mise à jour immédiatement? – 4thSpace

+0

Pour que cela fonctionne, j'ai dû libérer puis attribuer immédiatement le gestionnaire de localisation. – 4thSpace

+2

@ 4thSpace cela vous dérangerait de fournir du code sur comment vous l'avez réparé? Honnêtement, je pense qu'Apple a foutu du bon temps avec ça. Je ne peux pas m'arrêter du tout, j'ai tout essayé. – fuzz

Questions connexes