在 iOS 上,您可以发出同步网络请求(在主线程之外)并获得进度回调(在单独的非主线程上)吗?
我有一个串行(一次一个操作)后台队列,它运行所有不需要立即完成的耗时作业。不过,我确实想显示下载作业的进度。看起来您不能实例化NSURLConnection
和配置委托,启动同步连接,然后获取进度回调。
有没有办法在该后台队列上发出同步请求(同步,因为它后面的工作在完成之前不会开始),并且仍然可以获得setProgress:
可以发送以更新进度条的回调?(回调必须在不同的队列线程上,因为我的串行队列的线程在请求完成之前被阻塞。)
Apple 的 NSURLConnection 文档说,同步请求实际上是建立在幕后的异步之上。我必须重新实现吗?我需要一种方法来阻止线程,直到请求完成/失败。到目前为止,我最好的线索是NSOperationQueue
's waitUntilFinished
方法,但我不想启动异步并不断轮询同步方法。
NSURLConnection 讨论
同步加载建立在类提供的异步加载代码之上。当异步加载系统在专门为此加载请求生成的线程上执行 URL 加载时,调用线程被阻塞。为了执行同步加载,调用线程中不需要特殊的线程或运行循环配置。