2017-01-31 2 views
-1

제목으로 사용자가 원하는만큼 버튼을 클릭하면 uilabel이 번호로 업데이트되고 앱이 번호를 게시하기 위해 API를 호출합니다. 서버. api가 호출 될 때를 제외하고는 모두 잘 작동하며, uilabel은 2 - 5 초 동안 멈추고 사용자가 버튼을 눌러도 업데이트하지 않습니다. 백그라운드에서 api를 호출하고 메인 큐의 UI를 업데이트하려고 시도했지만 작동하지만 1 - 3 초 동안 잠시 멈춰야합니다. 왜냐하면 많은 사용자가 버튼을 동시에 누르면 레이블이 모든 사용자로 업데이트되기 때문에 서버에 카운트를 게시해야하는 이유가 있습니다.목표 c API가 호출 될 때 UIlabel이 잠시 멈춤.

흐름 : 사용자가 원하는만큼 버튼을 누르면 uilabel이 사용자가 버튼을 몇 번 눌렀는지, 매 5 초마다 api가 호출되어 uilabel이 번호를 업데이트하도록 업데이트됩니다 다시.

이 문제를 해결하거나 개선하기위한 제안이 있으십니까? 고마워요

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{ 
[MyApiManager postHitCount:hitCountModel block:^(id object, NSError *error) 
{ 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     [self setUpCount]; 
    }); 

    if ([self checkError:error]) 
     return; 
}]; 
}); 
+4

그래서 우리가 보는 현재보기에 어떤 일을 상호 작용하지 않도록 관리해야합니다. – AdamPro13

+3

백그라운드 스레드에서 api를 수행하고 메인 스레드에서 ui를 업데이트하십시오. 난 당신이 API를 호출하고 메인 스레드에서 UI가 업데이 트를 일으키는 원인이 생각 – Vinodh

답변

0

프로세스가 완료되는 동안 프로세스가 시작되고 숨기는 동안 로더 (activityIndicator)를 추가해야합니다.

는 그리고 당신은 프로세스가 사용자를 작동하는 동안 당신이 무슨 일을하는지

당신은 몇 가지 코드를 게시 할 필요가
// Start here 
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{ 
[MyApiManager postHitCount:hitCountModel block:^(id object, NSError *error) 
{ 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     [self setUpCount]; 
     // stop here 
    }); 

    if ([self checkError:error]) 
      // stop here 
     return; 

}]; 
});