2011-03-31 116 views
3

我在寫一個使用GPS數據的iPhone應用程序。我的問題是,GPS永遠不會停止更新位置(箭頭停留在狀態欄上),即使我殺死了實際進程。使其消失的唯一方法是卸載應用程序,或禁止它在系統設置中使用位置。GPS不會停止更新

這是我如何創建外景經理:

// Create the location manager if this object does not 
    // already have one. 
    if (nil == locationManager) 
     locationManager = [[CLLocationManager alloc] init]; 

    locationManager.delegate = regionTracker; 

    locationManager.desiredAccuracy = kCLLocationAccuracyBest; 

    // Set a movement threshold for new events. 
    locationManager.distanceFilter = 1; 

    [locationManager startUpdatingLocation]; 

在我的應用程序的委託,我都在applicationWillTerminate運行這兩行:和applicationDidEnterBackground:

[self.viewController.locationManager stopUpdatingLocation]; 
    [self.viewController.locationManager setDelegate:nil]; 

我nil代表,因爲我看到他們這樣做的一些例子,但是真的需要它嗎?

+0

locationManager屬性是否在這些應用程序委託方法中提供了非零值? – Till 2011-03-31 12:13:38

+0

是的。我只是測試了發射斷點,如果它是零,沒有骰子。感謝更多的幫助! – Accatyyc 2011-03-31 12:17:55

回答

7

同milonet提到的,在我的情況,我需要調用stopMonitoringSignificantLocationChanges除了stopUpdatingLocation。

+0

This爲我解決同樣的問題。不要忘記Upvote @ milonet的回答,如果僅僅是因爲他的評論低於他的回答是解決方案的第一個建議。 – 2013-09-04 21:17:57

2

我懷疑一些有趣的事情發生的事情與你的CLLocationManager對象的保留/釋放週期。

在委託中,您將它視爲屬性。在viewController中,你將它視爲一個iVar。

我寧願將其分配給self.locationManager而非locationManager。假設這是一個名爲屬性與retain二傳手語義,然後你release在你的viewController的-dealloc方法(可能調用stopUpdatingLocation上之後),你應該是好去。

我看到我自己,雖然我第一次與CoreLocation打4.0後立即解決此相同的行爲和backgrounding走了過來。我認爲我的電池有問題,因爲我剛剛拿到了iPhone 4.結果我只是攪動了CoreLocation,無論我的應用程序是否在運行。

+0

+1用於推薦點通知設置器。 – Till 2011-03-31 12:21:44

+0

你正在提出一個好點,我應該從一開始就這樣做。不幸的是,它並沒有解決我的問題。 GPS仍然保持亮着。我甚至嘗試釋放並將locationManager設置爲零,並且它仍然保持打開狀態。 此外,當您需要釋放位置管理器時,stopUpdatingLocation實際上會做什麼? (這也不適用於我,但仍然) 感謝您的回答。 – Accatyyc 2011-03-31 12:33:13

1

我找到了原因。在項目的早期階段,我使用了iOS 4的區域功能,該功能註冊了與應用程序標識符關聯的系統的全局區域。

解決方法 - 製作一個新項目。

+0

感謝您的更新 – Roger 2011-04-04 13:19:46

1

我有同樣的問題,位置經理總是保持不變! 我試圖dealloc所有,但gps留在..關閉gps唯一的解決方案是刪除應用程序!

+0

您是否正在使用iOS 4+的地區功能? – Accatyyc 2012-02-21 11:24:52

+0

是的,我正在使用xcode 4.2惠普ios 5.0與ARC – milonet 2012-02-21 11:37:53

+0

哦,我很抱歉,我誤解您的評論。我沒有使用ios 4的區域功能。+ – milonet 2012-02-21 13:06:10

1

類似的事情發生在我身上。我正在使用地圖查看與用戶位置激活。我像往常一樣釋放位置管理器,GPS仍然處於活動狀態。我禁用了這個選項,當它應該時,GPS停止。