iOS总结-多线程篇之NSOperation和NSOperationQueue

参考:https://www.jianshu.com/p/4b1d77054b35

NSOperation/NSOperationQueue是基于GCD更高一层的封装,完全面向对象。

优点:1.可添加完成的代码块,在操作完成后执行

            2.添加操作之间的依赖关系,方便控制执行顺序

            3.设定操作的优先级

            4.可以很方便的取消一个操作的执行

            5.使用KVO观察对操作执行状态的更改:isExecuteing,isFinished,isCancelled

NSOperation是个抽象类,不能封装操作,只能使用它的子类来封装操作

子类NSInvocationOperation

子类NSBlockOperation

自定义继承自NSOperation的子类

NSOperation需要配合NSoprationQueue来实现多线程。我们需要把创建好的操作加入队列中。

NSOperationQueue有两种队列:主队列、自定义队列

addOperationWithBlock:添加操作进入队列中,并并发执行

addDependency:添加操作的依赖关系,注意区分操作的优先级关系,以及操作执行结束顺序

NSOperation、NSOperationQueue控制串行、并发执行,maxConcurrentOperationCount

在主线程里面进行UI刷新,如点击、滚动、拖延等事件。通常把一些耗时的操作放在其他线程,如图片下载、文件上传,完成耗时操作后,需要回到主线程。

NSOperation、NSOperationQueue要注意线程安全,注意给线程加锁,加锁方式:@synchronized/NSLock/NSRecursiveLock/NSConditionLock/pthread_mutex/dispatch_semaphore/OSSpinLock/atomic(property)set/get等方式。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值