ios - 对 NSOperationQueue 工作的困惑

标签 ios objective-c nsoperationqueue

苹果公司是这么说的 操作队列通常提供用于运行其操作的线程。在 OS X v10.6 及更高版本中,操作队列使用 libdispatch 库(也称为 Grand Central Dispatch)来启动其操作的执行。因此,无论操作被指定为并发操作还是非并发操作,操作始终在单独的线程上执行。

据我从上面几行了解到 NSOperationQueue 并行执行操作,让我们把依赖关系放在一边。

我需要知道 NSOperationQueue 真的并行启动所有操作吗?是否打电话 - 每个操作的启动方法是在某一时刻还是按队列顺序逐个启动?

最佳答案

正如 Tim 已经回答的那样,请查看 maxConcurrentOperationCount,如果将其设置为 1,则操作将串行执行。

此外,如果你关心操作执行的顺序但想利用并行执行,你可以通过调用 - (void)addDependency:(NSOperation *) 非常简单地设置 NSOperation 对象之间的依赖关系操作

例如,您需要在操作 2 之前执行操作 1,您会执行如下操作:

NSOperation *operation1;
NSOperation *operation2;
[operation2 addDependency:operation1];

关于ios - 对 NSOperationQueue 工作的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18745052/

相关文章:

ios - 如何计算UIViewController内部内容的高度?

iphone - 我们如何以编程方式更改 iPhone 屏幕的亮度?

ios - 如果应用程序被杀死,推送通知不会进入相应的类别

iphone - 另一个 "message sent to deallocated instance"

iphone - UITableViewController 和 subview

objective-c - 将 NSOperation 依赖项添加到已在 NSOperationQueue 中的操作

iphone - ASINetworkQueue setQueueDidFinishSelector 选择器提前结束?

iphone - 使用 NSOperationQueue 从 web 异步加载多个图像

iOS Parse.com 使用指针列保存对象会出现 "user not allowed"错误

ios - 如何使用图像和标签制作自定义 UIBarButtonItem?