2016-09-16 44 views
0

從我在Swift 2.0中的iOS應用程序中,在後臺線程中請求來自服務器的數據時,顯示自定義微調器註釋。 一旦我得到數據並更新sqlite數據庫(約15秒處理所有查詢),微調開始凍結。在XCode中,設備cpu顯示95%和100%之間的活動。 我試圖以不同方式使用GRAND CENTRAL DISPATCH,但我沒有找到如何在不凍結微調器動畫的情況下使其工作。 任何想法如何解決這個問題? 謝謝!處理後臺線程時iOS UI微調框凍結

我不能張貼整個代碼,但它是與此類似:

//Using the spinner here https://github.com/icanzilb/SwiftSpinner 

Spinner.show("Please wait", animated: true) 

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0)) 
{ 

    //around 5 seconds to get data 
    var data = getDataFromServer() 

    //around 20 sec to process and save the data in sqlite. It stops spinning from here.. 
    saveDataInDB(data) 

} 
+1

你可以請你發佈你的代碼嗎? – anhtu

+0

你可以顯示'saveDataInDB'的功能嗎?聽起來好像它可能在主線程上做了一些繁重的處理。 – Kamchatka

+0

我更新了問題並根據要求添加了一些代碼。 – Philiz

回答

0

我發現的bug。在saveDataInDB()中,我使用OAuthSwift進行請求,在接收回調時更改執行線程。它在主線程上跳回,然後在主線程上運行db查詢。我在這裏爲這個問題開了一個新的問題:OAuthSwift request callback on main thread