2013-07-29 55 views
0

我使用CLLocationManager,如果程序是第一次安裝,它需要用戶接受或拒絕分享他的位置。我想要的是編程自己等待,直到用戶提示。usleep()鎖定iPhone提示

現在的問題是,我與usleep()

while ([CLLocationManager authorizationStatus] == USER_NOT_PROMPTED) { 
    usleep(10000); 
} 

等候在那裏但是,這將導致實際的iPhone被鎖定的方式,位置共享問題不彈出,因此程序掛起。有沒有辦法在單獨的線程中運行這些用戶提示?我正在使用iOS 6.1

+0

不,您無法訪問庫的內部行爲,即使可以,也無法在單獨的線程上執行UI交互。你需要重新思考你的邏輯。如果用戶接受,你的CLLocationManager將照常開始。如果失敗,那麼你會得到回調'didFailWithError:' – borrrden

+0

然後,在單獨的進程或線程中運行整個程序是一個好習慣? –

+0

你的程序將沒有過程的概念。您需要更具體,因爲上述問題的答案是「可能不是」 – borrrden

回答

1

由於您阻止運行循環,導致系統無法提示用戶使用位置權限,所以程序處於凍結狀態。 不要這樣做。如果您希望用戶立即允許或拒絕使用他們的位置,只需在應用程序中儘早撥打位置管理器即可。如果您不希望用戶在決定之前做任何其他事情,請不要讓他們做任何事情 - 也許會顯示空白屏幕。

雖然這聽起來不像一個好的用戶體驗,所以最好找到讓他們儘可能多的方法。爲什麼不只是假設用戶拒絕您在他們另有決定之前使用他們的位置的權限?