在您最初的问题中,您设置progress
为 0 到 100 之间的整数。如果这是 a UIProgressView
,那么progress
是一个浮点数,应该从 0 到 1.0。
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
并确保正确反映。