0

听起来可能是个愚蠢的问题,但是出于好奇,是否可以在目标 c 中暂停 for 循环?

例如:

for (NSManagedObject *a in sortedArray)
{
  //do something that takes time, for example download something
}

在上面的示例中,for 循环将同时开始所有下载,因为在开始下载(或您放在那里的任何操作)之后,它将转到数组中的下一个对象。如果我想等到下载完成怎么办?有没有办法暂停下载或者我是否必须重新启动 for 循环以跳过已经下载的循环?

4

2 回答 2

1

有几种方法可以实现这一点。一种方法是使用 Grand Central Dispatch 信号量。在此处阅读有关调度信号量的信息:http: //www.mikeash.com/pyblog/friday-qa-2009-09-18-intro-to-grand-central-dispatch-part-iv-odds-and-ends.html

还要检查这个问题,这可能正是您需要的:如何向一个线程发出信号以等待下载完成,然后将数据传递给等待线程

于 2013-02-15T08:53:16.513 回答
0

您需要将 NSThreads / GCD 用于多个进程。

但是您将不得不处理同步和异步方法,有时还需要处理回调。

于 2013-02-15T09:07:00.767 回答