【发布时间】:2013-02-02 02:29:57
【问题描述】:
我有一个GCD 在后台运行。我有一个按钮,按下时我希望它在 GCD 完成时加载加载等待屏幕,然后在该按钮上执行其余代码。附上样品。
我的不行,我基本上想说,等GCD完成就等多久,同时加载一条等待消息,完成后继续代码。
谢谢
- (IBAction)btnTapped:(id)sender
{
shouldCancel=NO;
dispatch_queue_t existingQueque = dispatch_get_main_queue();//finds the current GCD, the one I created in a different method
dispatch_group_t group =dispatch_group_create();
dispatch_group_async(group, existingQueque, ^
{
dispatch_group_wait(group, DISPATCH_TIME_FOREVER);//does not work, I guess group can't be created here.
[self performSelectorOnMainThread:@selector(showWaitViewWithMessage:) withObject:@"Loading" waitUntilDone:YES];//load this until GCD queque done
[self performSelector:@selector(performSearch) withObject:nil afterDelay:0];
});
}
【问题讨论】:
-
dispatch_get_main_queue 为您获取系统创建并在主线程上提供服务的主队列。它没有得到你自己创建的队列
-
那我怎么说“是否有活动队列?如果有,请等到完成”
-
你不能。如果您需要引用您创建的队列,则需要保留对队列的引用。
-
同意。典型的解决方案是将创建的队列存储在 ivar 中并在代码中引用它。或者只使用
dispatch_get_global_queue。
标签: ios grand-central-dispatch