【发布时间】:2016-10-20 07:55:00
【问题描述】:
AFHTTPSessionManager GET:... 在调度组等待时不执行它的块。 dispatch_group_wait 真的“永远”等待。在我的代码中,@"all done" 永远不会发生。
我怎样才能让它工作?
(对不起。正如我所见,大多数人都想知道这里使用调度组的原因。原因是循环执行请求并等待得到最后一个响应。我故意没有在代码中显示我的循环,因为循环不会影响块没有被执行)
dispatch_group_t group = dispatch_group_create();
NSString *urlString = @"someURLForExampleReturnJSON";
dispatch_group_enter(group);
[self.sessionManager GET:urlString parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject)
{
NSLog(@"success block execution");
dispatch_group_leave(group);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"failure block execution");
dispatch_group_leave(group);
}];
dispatch_group_wait(group, DISPATCH_TIME_FOREVER);
NSLog(@"all done");
【问题讨论】:
-
嗯,我认为这不是 dispatch_group 的用途(特别是这样),您可能应该改用 dispatch_semaphore
-
我无法理解这里的
dispatch_group有什么用?你能解释一下你需要什么吗?为什么你使用dispatch_group? -
如果你使用 dispatch_group_notify 会更好
标签: ios objective-c grand-central-dispatch dispatch afnetworking-3