Objective c ios NSOperationQueue,添加时所有操作都会运行,并且不';t队列

Objective c ios NSOperationQueue,添加时所有操作都会运行,并且不';t队列,objective-c,ios,nsoperation,nsoperationqueue,Objective C,Ios,Nsoperation,Nsoperationqueue,因此,我有一组ASINetworkQueues,它们当前一起运行,导致DB保存时出现争用情况。我正在尝试创建一个NSOperationQueue,它将对每个“子队列”进行排队。我目前已经创建了一个带有main方法的NSOperation,它启动“子队列”开始下载 我的问题是,每次我使用“addOperation”将子队列添加到主队列时,它都会立即触发“main”方法,以便子队列同时运行。我的印象是,主要的方法是一次发射一个。i、 e.仅适用于队列顶部的操作 也许我遗漏了一些东西,但我似乎不知道如

因此,我有一组ASINetworkQueues,它们当前一起运行,导致DB保存时出现争用情况。我正在尝试创建一个NSOperationQueue,它将对每个“子队列”进行排队。我目前已经创建了一个带有main方法的NSOperation,它启动“子队列”开始下载

我的问题是,每次我使用“addOperation”将子队列添加到主队列时,它都会立即触发“main”方法,以便子队列同时运行。我的印象是,主要的方法是一次发射一个。i、 e.仅适用于队列顶部的操作

也许我遗漏了一些东西,但我似乎不知道如何暂停其他操作,直到第一个操作完成。此外,我甚至不能让我的程序陷入导致NSOperation的isReady=0的情况。。这总是会给你答案是的

下面是一些代码:

注意:我已将NSOperation队列maxConcurrentOperations设置为1

主要操作方法:

-(void)main {
    [subQueue download];
}
设置队列:

ChapterDownloadOperation *cdo =  [[ChapterDownloadOperation alloc] init];
cdo.chapter = ch;
[chapterDownloadQueue addOperation:cdo];
[cdo release];
如果我添加了多个操作,那么main方法将在实例上激发,并将其添加到队列中。有没有其他功能,我应该覆盖和使用时,该操作准备摇滚。我有一种感觉,主要的方法是设置操作

非常感谢您的任何想法


非常感谢。

NSOperationQueue一旦能够平衡额外的处理能力,就会启动main方法

要将队列一次限制为一个操作,可以尝试在每个操作之间添加依赖项,然后再对它们进行排队: [B:A]//[B main]在A完成执行之前不会被调用

但请注意,如果A被取消,B仍将运行


希望有帮助

我发现这个例子非常有用

您的意思是通过获取队列中的操作数组来为操作添加依赖项吗?要使依赖项正常工作,您需要先将它们添加到每个操作中,然后再将其添加到队列中。可以,但操作是通过单击按钮创建并添加到队列中的。因此,在点击另一个按钮之前,将第一个操作添加到队列中时,如何将第一个操作作为依赖项添加到第二个操作中。有什么想法吗?嗯,那么在这种情况下,您可能需要研究使用串行调度队列而不是操作队列。串行调度队列按照先进先出的顺序一次执行一个队列。在Cool中有很多关于串行队列的有用信息,谢谢。我只是将数组转换为队列,并使用全局布尔值作为信号量。现在似乎工作正常,有机会的话,我会看看串行调度队列。非常感谢!