2016-09-16 3 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

나는 버그를 발견했다. saveDataInDB()에서 콜백을받을 때 실행 스레드를 변경하는 OAuthSwift를 사용하여 요청을 수행하고 있습니다. 그것은 주 스레드에서 다시 점프하고 db 쿼리는 주 스레드에서 실행됩니다. 이 문제에 대한 새로운 질문을 여기에서 열었습니다. OAuthSwift request callback on main thread