Objective c NSURLConnection与NSOperationQueue内的GCD连接,一次1个连接

Objective c NSURLConnection与NSOperationQueue内的GCD连接,一次1个连接,objective-c,upload,nsurlconnection,nsoperation,nsoperationqueue,Objective C,Upload,Nsurlconnection,Nsoperation,Nsoperationqueue,根据用户的操作,我的应用程序必须进行一系列上传。他可以连续编写一长串上传程序,所以我更喜欢每次只执行一个NSURLConnection,以避免网络拥塞。我正在使用NSOperationQueue添加上载作业;在我使用的队列中: [NSURLConnection sendAsynchronousRequest:uploadRequest queue:tempQueue complet

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

[NSURLConnection sendAsynchronousRequest:uploadRequest
                                   queue:tempQueue
                       completionHandler:/* completion code */];
我的问题是,即使一切正常,由于使用了块,具有异步连接的函数也会立即返回,因此NSOperationQueue不会等待NSURLConnection完成,而是直接继续下一次上载


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

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

为什么不使用同步连接

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

然后,将最大并发操作数设置为1,并逐个上载。

为什么不使用同步连接

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

然后,将最大并发操作数设置为1,并应逐个上载。

我设置了,但block函数立即返回,因此它不起作用,因为队列似乎很快被清除。我设置了,但block函数立即返回,所以它不起作用,因为队列似乎很快就被清除了。我可以在后台队列中进行同步连接而不阻塞UI吗?是否可以将sendSynchronousRequest与块一起使用,或者我必须使用委托函数?提前谢谢你!同步请求会一直阻塞,直到完成为止,但当您将其放入操作队列中时,它不会阻塞主线程。因为它会阻塞,所以不需要委托回调,您只需接收来自单个调用的所有内容。唯一的缺点是您不知道单个请求的进度。我可以在后台队列中进行同步连接而不阻塞UI吗?是否可以将sendSynchronousRequest与块一起使用,或者我必须使用委托函数?提前谢谢你!同步请求会一直阻塞,直到完成为止,但当您将其放入操作队列中时,它不会阻塞主线程。因为它会阻塞,所以不需要委托回调,您只需接收来自单个调用的所有内容。唯一的缺点是您不知道单个请求的进度。