GCD 和 NSOperation 区别及各自应用场景

本文探讨了GCD和NSOperation的主要特点、区别以及适用场景。GCD适用于简单高效的任务,提供了如一次性执行、延迟执行等功能,而NSOperation则支持设置操作间的依赖、暂停/继续、优先级等,更适合复杂任务。尽管GCD执行效率高,但NSOperation的灵活性和可观察性使其在某些情况下更有优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

GCD 相关知识以前写过一些东西,点击查看
GCD主要特点:
1)GCG 是iOS4.0推出的,主要针对多核CPU 做了优化
2)GCD是 C 语言的技术
3)GCD 提供了一些 NSOperation 不具备的功能,比如一次性执行(创建单例),延迟执行,调度组.

NSOperation 特点:
1) NSOperation 是 iOS2.0后推出的,iOS4.0之后重写了NSOperation.
2) NSOperation 将操作(异步的任务)添加到队列(并发队列),就会执行制定操作的函数.
3) NSOperation里可以方便的设置操作:
1⃣️最大并发数
2⃣️队列的暂停/继续
3⃣️取消所有的操作
4⃣️指定操作之间的依赖关系(GCD可以用同步实现)
**使用NSOperation 需要注意几点点:
1) 注意避免产生循环依赖
2) 要先设置依赖关系,然后添加到队列

GCD 和 NSOperation的区别主要表现在以下几方面:

1) GCD是一套 C 语言API,执行和操作简单高效,因此NSOperation底层也通过GCD实现,这是他们之间最本质的区别.因此如果希望自定义任务,建议使用NSOperation;

2) 依赖关系,NSOperation可以设置操作之间的依赖(可以跨队列设置),GCD无法设置依赖关系,不过可以通过同步来实现这种效果;

3) KVO(键值对观察),NSOperation容易判断操作当前的状态(是否执行,是否取消等),对此GCD无法通过KVO进行判断;

4) 优先级,NSOperation可以设置自身的优先级,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值