1
我需要在後臺線程中解析json。此解析器還需要使用委託方法更新我的進度欄,但出於某種原因,我的進度條僅更新並且進程結束。我的代碼如下:IOS - 從異步調用更新進度欄
-(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;
}
任何人都可以解釋我在這裏做錯了什麼?
你能舉一個例子嗎?我不知道你在說什麼方法。 –
完美。像魅力一樣工作。謝謝! –
使用GCD的用戶'performSelectorOnMainThread'有點奇怪。將'dispatch_async'與'dispatch_get_main_queue'一起使用會更加一致。 – rmaddy