我想說明的MBProgressHUD項目的進展情況,但是當我通過靶向這種方法:如何使用GCD演示背景任務?
- (IBAction)signInBttn:(id)sender {
MBProgressHUD *hudd = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
hudd.mode = MBProgressHUDModeAnnularDeterminate;
hudd.labelText = @"Loading";
__block float value = 0;
for (int j = 0; j<2000; j++) {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
for (int i = 0; i<20000 ; i++) {
}
value += 0.001;
dispatch_async(dispatch_get_main_queue(), ^{
hudd.progress = value;
});
});
}
}
HUD完全出現100%。這僅僅是爲了我的信息,我不知道如何創建後臺任務來計算某些事情,以及當他完成後, 40%的HUD令人耳目一新,達到了40%的進步。我希望我自己清楚,如果有人有時間來幫助改進我的代碼,非常感謝任何答案
相同的基本問題,因爲[動態更新一個UILabel(http://stackoverflow.com/q/6336991/)的UI沒有得到重新繪製,直到控制權返回到運行循環。正確的做法是使用某種計時器。 –
空的'for'循環應該是「暫停」嗎?編譯器很可能會優化這種不存在的權利。 –
是的,我想以簡單的方式模擬高級計算 – user3163231