gpt4 book ai didi

ios - NSOperation 与 Grand Central Dispatch

转载 作者:IT王子 更新时间:2023-10-29 07:24:26 26 4
gpt4 key购买 nike

我正在学习 iOS 的并发编程。到目前为止,我已经阅读了关于 NSOperation/NSOperationQueue 的内容和 GCD . GCD 上使用 NSOperationQueue 的原因是什么?反之亦然?

听起来 GCDNSOperationQueue 都从用户那里抽象出了 NSThreads 的显式创建。但是,我不清楚这两种方法之间的关系,因此请提供任何反馈!

最佳答案

GCD 是一种基于 C 的低级 API,可以非常简单地使用基于任务的并发模型。 NSOperationNSOperationQueue 是做类似事情的 Objective-C 类。 NSOperation 是最先引入的,但从 10.5 开始和 iOS 2 , NSOperationQueue 和 friends 在内部使用 GCD 实现。

一般来说,您应该使用适合您需要的最高抽象级别。这意味着你通常应该使用 NSOperationQueue 而不是 GCD,除非你需要做 NSOperationQueue 不支持的事情。

请注意,NSOperationQueue 不是 GCD 的“精简版”;事实上,有很多事情您可以使用 NSOperationQueue 非常简单地完成,而使用纯 GCD 则需要大量工作。 (示例:一次只运行 N 个操作的带宽受限队列;建立操作之间的依赖关系。使用 NSOperation 非常简单,使用 GCD 非常困难。)Apple 完成了利用 GCD 通过 NSOperation 创建非常好的对象友好 API 的艰苦工作。除非你有理由不这样做,否则请利用他们的工作。

警告:另一方面,如果您真的只需要发送一个 block ,而不需要 NSOperationQueue 提供的任何附加功能,那么使用 GCD 没有任何问题。只要确保它是适合这项工作的工具即可。

关于ios - NSOperation 与 Grand Central Dispatch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10373331/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com