慢慢进入循环

时间:2015-01-29 07:09:07

标签: cocoa swift sleep for-in-loop

我有一个函数,它通过将项目发送到服务器并获取响应来循环遍历项目列表。我遇到的问题是循环速度比服务器可以处理的速度快。我需要找到一种方法来减慢循环,而不冻结应用程序。有没有办法延迟循环移动到下一个项目片刻?在其他语言中,我会使用类似睡眠(间隔)的东西。

2 个答案:

答案 0 :(得分:1)

不要减慢过程。将网络调用添加到具有有限数量的并发操作的操作队列。您可能需要将网络代码重写为NSOperation子类,但这非常简单。您可以在this tutorial中看到一些示例。

对于可以进行的同时网络连接的数量存在内置限制,但听起来您的服务器限制低于该限制,或者您正在使网络连接饱和并且您的后续呼叫是时间限制在他们能够开始之前。

答案 1 :(得分:0)

而不是睡眠间隔,听起来你想要一个再次调用相同代码的完成块,直到列表为空。所以一旦它完成了请求,就会进入下一个请求。

此外,我不认为你应该试着睡觉,因为它会占据主线,导致用户体验不佳。