我在iPhone上遇到位置奇怪的問題。它看起來很瘋狂,但似乎是可重複的。在我的應用程序中,我使用Core Location來獲取某些用戶操作的位置數據。通常它似乎工作。但是,在應用程序部署在沒有以前版本的設備上(從XCode或通過iTunes無關緊要)之後的第一次運行中,它根本不起作用。 無論
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
也不
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
被調用。我甚至沒有獲得手機信號塔的座標。 GPS彈出的唯一標誌是要求允許訪問位置數據。如果我退出應用程序(並退出,我的意思是真正殺死它,而不是僅僅投入後臺),在下一次運行時,一切都會開始正常工作。iPhone位置數據在第一次啓動時不起作用
一些更多的細節。 正如我需要在那裏用戶執行某些動作的位置,我用以下方法:
- 我使用相同的共享
CLLocationManager
對象(kCLLocationAccuracyBest
)和相同的共享委託對象。 - 當用戶執行操作時,我打電話
startUpdatingLocation
並創建一個後臺線程,基本上是定時器,但還有更多不相關的東西。它每15秒醒來一次 - 我累積的修復程序由
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
- 當後臺線程喚醒時,它檢查修復和時間。如果有足夠的修復,它會停止等待。如果超過1分鐘的時間間隔,它也會停止等待。
- 「停止等待」=調用某種方法。該方法尋求收到(如果有的話)之間的最佳解決方案並對其進行處理。它也叫
stopUpdatingLocation
我沒有看到任何明顯的缺陷。而且,同樣的二進制文件通常在第二次啓動時開始工作。任何想法爲什麼?我瘋了嗎?
當您第二次啓動應用程序時,是否還有彈出窗口? 如果沒有,那麼在您的代碼中可能會出現某種競爭條件,並由此彈出窗口觸發。 – 2011-01-13 14:54:29