【发布时间】:2015-07-13 13:56:24
【问题描述】:
我想按顺序下载 3 个文件。其中两个是 txt 文件,一个是 .gz 文件。我正在使用 NSURLConnection 下载上述文件。
我对 iOS 编程非常陌生。我在 SO 和 google 的其他问题中看到我们可以使用串行调度队列串行执行一些操作。
但我不知道如何使用 NSURLConnection 来做到这一点。我在下面尝试过,但没有成功。
dispatch_queue_t serialQueue = dispatch_queue_create("com.clc.PropQueue", DISPATCH_QUEUE_SERIAL);
dispatch_async(serialQueue, ^{
[self downloadProp];
});
dispatch_async(serialQueue, ^{
[self downloadDatabase];
});
dispatch_async(serialQueue, ^{
[self downloadTxt];
});
上面的代码没有执行 NSURLCONnection 的 connectionDidFinishLoading。任何人都知道如何实现这一目标?
【问题讨论】:
-
那么你需要做的就是发出3个独立的同步网络请求。
-
这篇文章向您展示了如何发出同步请求:stackoverflow.com/a/7262578/4657588
-
您好 Anjali,请使用 AFNetworking 框架,该框架使用基于块的请求。我们不再真正使用 NSURLConnection,它已被 NSURLSession 取代,您正在使用遗留库和代码。其他人建议使用同步请求,我个人只是将一些异步请求链接在一起以达到相同的效果而不阻塞主线程。
-
如果您最终使用了同步请求,请确保不要在主线程上使用它,否则您的 UI 将阻塞并且您的应用程序可能会被系统终止。
-
@SteveWilford 好点,我猜你可以做 3 个异步请求,并让他们在完成后调用下一个请求。
标签: ios objective-c ios7 ios8 grand-central-dispatch