我想说明的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