2010-05-31 43 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 2010-05-31 16:29:41

+0

對於它的工作,我不得不釋放,然後立即分配位置管理器。 – 4thSpace 2010-05-31 16:57:19

+2

@ 4thSpace你會介意提供關於如何修復它的代碼?老實說,我認爲蘋果公司在這個問題上搞砸了很多時間。我無法讓位置服務停下來,我嘗試了一切。 – fuzz 2011-03-23 06:44:24