我的多个AFJSONRequestOperations何时完成



我正在像这样的for循环中启动多个AFJSONRequestOperation:

for(NSString *obj in collection)
operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
         //NSLog(@"success");      
        }
        failure:nil];
[operation start];

如何确定我的所有操作都已完成?

我想这些操作是添加到AFHTTPClient中的operationQueue中的,但我不确定。否则,我不知道如何访问正在使用的AFHTTPClient的实例。

在循环之外,定义一个计数器(int),该计数器最初设置为集合的元素数。在中,每个完成块(明确地说,在成功与失败处理程序中!)将计数器递减一。如果它达到零,则所有请求都已完成。

注意:我不完全确定,但据我所知,AFJSONRequestOperation不会在被取消时调用处理程序块。请查阅相关文件。(就我个人而言,我认为这是一个设计问题,但唉…)

这个问题有更优雅的解决方案。然而,这将需要一组更专业的类和工具来帮助实现常见的异步设计模式,比如这个。

NSMutableArray中添加AFJSONRequestOperation对象(在本例中我使用的是operations),而不是启动每个对象,然后使用方法:

AFHTTPClient *client = [[AFHTTPClient alloc] initWithURL:baseURL];
[client enqueueBatchOfHTTPRequestOperations:operations progressBlock:nil completionBlock:^(NSArray *operations) {
    // called when all operations have finished.
}];

相关内容

  • 没有找到相关文章

最新更新