0

我需要执行一些网络调用。我正在使用 NSURLConnection 但我已将其封装到一个使用块的新类中:

    [MAURLConnection asyncConnectionWithURLString:str 
                                  completionBlock:^(NSData *data, NSURLResponse *response) {
                                      //completed, do something with data returned

                                  } 
                                       errorBlock:^(NSError *error) {
                                           //error
                                       }];
}

但是,现在我需要一次调用其中的几个,但我需要知道它们什么时候完成。最好的方法是什么?我不一定需要进度,只要他们都完成了。

4

2 回答 2

0

Almo 评论的另一个变体是将它们推入类似队列的结构中,完成后队列的长度将为零。要完成非阻塞检查以查看队列是否为空,请使用运行循环。

- (void)waitUntilDone {       
    while (![_queue count] > 0) {
        [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
    }
}

根据您的需要,您可以使用它来阻止并给您回电,将其放在线程中并继续执行操作并给您回电。

于 2012-07-13T15:34:37.397 回答
0

我能想到的最简单的想法是计数器。当每个连接完成时,只需增加一个计数器。一旦计数器达到您的号码,您就完成了。您还可以通过某些功能增加计数器并在计数器编号被击中时运行通知。这可能是数组的变化,您还可以在其中存储一些有关已完成连接的附加信息。

于 2012-07-13T15:58:00.317 回答