, 당신은 0에서 100 사이의 정수로 progress
을 설정했다. 당신이 정말로 그룹을 사용하지 않는 때문에
dispatch_group_t group = dispatch_group_create();
dispatch_queue_t queue= dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);
dispatch_group_async(group, queue, ^{
for (int i = 0; i < 100; i++)
{
dispatch_group_async(group, dispatch_get_main_queue(),^{
self.progressBar.progress = ((CGFloat) i)/100.0;
});
// do big somethings
}
});
또는, 더 간단하게 (만 글로벌 큐에 하나의 작업이, 일련 큐를 처리 할 때 그룹은 일반적으로 중복) :
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);
dispatch_async(queue, ^{
for (int i = 0; i < 100; i++)
{
dispatch_async(dispatch_get_main_queue(),^{
self.progressBar.progress = ((CGFloat) i)/100.0;
});
// do big somethings
}
});
아직 진행률보기 업데이트가 표시되지 않는 경우 올바르게 연결되지 않은 IBOutlet
과 같은 단순한 항목이어야합니다. self.progressBar
이 nil
이 아닌지 확인하십시오. progress
을 0.5
으로 설정하고 제대로 반영되는지 확인하십시오.
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
동시 큐이기 때문에, 내가 진행 상태를 업데이트 할
dispatch_queue_t queue = dispatch_queue_create("com.company.myqueue", NULL);
을 사용하는 것이 좋습니다
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
dispatch_async(queue, ^{
// async stuff
dispatch_sync(dispatch_get_main_queue(), ^{
// sync stuff
});
});
dispatch_release(queue);
출처
2013-02-20 16:32:25
Rob
코드에서 진행 상태가 변경되었지만 중요하지는 않습니다. – dobiho
@dobiho 답변에 대한 최근 편집이 좋아 보인다. 업데이트가 표시되지 않으면 'IBOutlet'을 의심 할 것입니다. 위의 내 대답은 진행률보기를 잘 업데이트하는 코드입니다. 그것이 당신을위한 것이 아니라면, 그것은'IBOutlet'처럼 단순 할 것입니다. 'self.progressBar'가'nil'이 아닌지 확인하십시오. – Rob