【发布时间】:2013-12-30 19:44:58
【问题描述】:
我正在尝试找出使用 AFNetworking 2.0 对多个 GET 请求进行分组或批处理的最佳做法。在代码可以继续之前,所有的 GET 请求都需要完成,但它们不必一个接一个地运行。现在对于单个请求,我使用的是AFHTTPRequestOperationManager(另请参见此处:Subclass AFHTTPRequestOperationManager?)。
这里描述了一种可能性,使用 dispatch_group:How to batch request with AFNetworking 2?,但这是针对AFHTTPSessionManager,仅适用于 iOS7。我的应用仍然以 iOS6 为目标,所以我需要使用 AFHTTPRequestOperationManager。
是使用 dispatch_group 的方式吗?或者我忽略了 AFNetworking 中的某些内置内容并且可以用于此目的?
编辑:仍然不知道正确的方法是什么......例如,我如何使用AFHTTPRequestOperation 的组?
我尝试了以下方法,但最终的 NSLog(“完成搜索”)总是在所有响应进入之前首先显示:
dispatch_queue_t dispatch_queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_group_t dispatch_group = dispatch_group_create();
for (Entry *e in self.entries)
{
dispatch_group_async(dispatch_group, dispatch_queue, ^{
NSString *queryString = [e getQueryString];
NSURL *URL = [NSURL URLWithString: queryString];
NSURLRequest *request = [NSURLRequest requestWithURL:URL];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
operation.responseSerializer = [AFHTTPResponseSerializer serializer];
operation.completionGroup = dispatch_group;
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"%@", responseObject);
} failure:nil];
[operation start];
});
}
dispatch_group_notify(group, dispatch_get_main_queue(), ^{
NSLog(@"done searching");
});
【问题讨论】:
标签: ios afnetworking afnetworking-2