NSOperation isConcurrent

NSOperation默认是非并发的,当你调用-[NSOperation start]方法时,该方法会等任务结束才会返回;

并发的NSOperation是指,当你调用-[NSOperation start]后,NSOperation会在非当前线程(建立一个NSThread,或是dispatch async等)执行任务,并在任务结束之前就返回;

需要注意的是,并发行为都需要你自己实现,若要实现并发,你需要做很多额外的工作:

  1. 你需要创建一个subclass
  2. 除了重载main方法,实现并发你还需要至少重载start,isConcurrent,isExecuting,isFinished四个方法
  3. start里,创建Thread或者调用一个异步函数
  4. 更新isExecuting,并且发送相应KVO消息
  5. 任务结束后,你还得更新isExecuting 和 isFinished,发送相应KVO消息

实现一个并发的NSOperation比较少见,具体如何实现,可以读读文档: NSOperation Class Reference


大多数情况下NSOperation都设计成非并发,这样实现起来会简单很多;

并且,一般会配合NSOperationQueue使用,由NSOperationQueue来负责执行NSOperation,而非直接调用-[NSOperation start]

若有复杂任务需要并发执行,一般也是拆成多个NSOperation,由NSOperationQueue并发的执行多个NSOperation

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值