IOS - 从异步调用更新进度条

时间:2013-06-04 23:02:47

标签: ios asynchronous progress-bar progress

我需要在后台线程中解析json。此解析器还需要使用委托方法更新我的进度条,但由于某种原因,我的进度条仅更新并且过程结束。我的代码如下:

-(void)downloadStuff
{
   // some other code
   downloaderController.delegate = self;
   dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
       [downloaderController parseJson];
   });
}

进程中的方法parseJson多次调用委托来更新进度条,如下所示:

-(void)updateProgressBar
{
      //Is anyone listening
      if([_delegate respondsToSelector:@selector(updateProgressBar)])
      {
         [_delegate updateProgressBar];
      }
} 

我的updateProgressBar如下:

(void)updateProgressBar
{
    _progressBar.progress =+ 0.05f;
}

有谁能解释一下我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

在致电updateProgressBar之前切换回主线程。您可以使用GCD或performSelector来执行此操作。

                [self.delegate performSelectorOnMainThread:@selector(updateProgressBar) withObject:nil waitUntilDone:NO];