1

我的应用必须根据用户的操作进行一系列上传。他可以连续编写一长串上传,所以我更喜欢每次只执行一个 NSURLConnection ,以避免网络拥塞。我正在使用 NSOperationQueue 添加上传作业;在我使用的队列中:

[NSURLConnection sendAsynchronousRequest:uploadRequest
                                   queue:tempQueue
                       completionHandler:/* completion code */];

我的问题是,即使一切正常,具有异步连接的函数也会因为使用块而立即返回,因此 NSOperationQueue 不会等待 NSURLConnection 完成,而是直接继续下一次上传。

我知道我可以实现 - 例如 - 一个 NSMutableArray 来跟踪当前和待处理的上传列表并相应地调度它们,但我想知道是否有一种简单的方法可以告诉这个循环等待如果已经有一个打开的 NSURLConnection进步。

4

2 回答 2

1

为什么不使用同步连接?

[myQueue addOperationWithBlock:^{
    NSData *data = [NSURLConnection sendSynchronousRequest:…
        returningResponse:… error:…];
    // …
}];

然后将最大并发操作数设置为 1,并且上传应该一个接一个。

于 2012-11-07T08:31:02.343 回答
0

好吧,您可以将您的操作队列 maxConcurrentOperationCount 设置为 1 Like [queue setMaxConcurrentOperationCount:1] 希望这会起作用

于 2012-11-07T08:26:44.517 回答