2016-01-03 30 views
0

快速問題PFConfig。 不幸的是,我無法在後臺獲取當前配置,所以我需要在應用程序同步啓動時調用它。PFConfig同步通話

如果網絡不可用,某些版本的iOS上的應用程序會凍結,我想知道是否有一些超時可以在同步調用中設置。

感謝

+0

你能解釋爲什麼它不能被取得異步嗎? – danh

+0

我的配置中有一個標誌,用於打開(或關閉)應用程序上的功能。這個標誌可以更新,所以每次運行我需要檢查它的值的應用程序。 – mulp

回答

1

我的主要建議是做呼叫非同步和設計UI來對付它。例如,第一次運行的視圖控制器在準備運行時顯示「hi」(並且要求用戶必須首次運行網絡 - 如果他們剛剛下載應用程序,則極有可能)。

換句話說,我認爲這是一個錯誤,迫使配置調用是同步的,但這裏有一個方法來做到這一點...

- (PFConfig *)yuckyGetConfig { 
    __block PFConfig *config; 
    dispatch_semaphore_t semaphore = dispatch_semaphore_create(0); 

    [PFConfig getConfigInBackgroundWithBlock:^(PFConfig *config, NSError *error) { 
     config = config; 
     dispatch_semaphore_signal(semaphore); 
    }]; 

    dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER); 
    return config; 
} 

的想法是,dispatch_semaphore_wait相當於一個while循環(但執行少得多的指令),直到getConfig塊執行完畢。 (這個想法得益於@Rob, here,儘管他的其他建議是針對文檔API的)。

+0

我認爲調用同步功能也是錯誤的,您的回答接近解決方案。我需要設計我的應用程序啓動以考慮該解決方案。 – mulp