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

本文深入解析了NSOperation和NSOperationQueue的工作原理及应用,包括其面向对象的封装特性,如何添加完成代码块、设定操作优先级、控制执行顺序、取消操作执行以及观察操作状态更改。同时介绍了主队列和自定义队列的使用,以及如何在多线程环境中确保线程安全。
摘要由CSDN通过智能技术生成

参考: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等方式。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值