NSOperation 和 NSOperationQueue

NSOperaton 是个抽象类,并不具备封装操作的能力,必须使用它的子类,下面是它的三种子类。

1 NSInvocationOperation

NSOperation 和 NSOperationQueue_第1张图片
NSInvocationOperation使用格式

2 NSBlockOperation

NSOperation 和 NSOperationQueue_第2张图片
NSBlockOperation的使用格式

3 自定义子类继承自NSOperation,实现-main方法

NSOperation 和 NSOperationQueue_第3张图片
创建自定义的NSOperation
NSOperation 和 NSOperationQueue_第4张图片
main方法中实现

NSOperationQueue:(操作队列)有两种队列,主队列 通过 mainQueue获得,凡是放到主队列中的任务都将在主线程执行。非主队列 直接 alloc init 出来的队列。非主队列同时具备了并发和串行的功能,通过设置最大并发数属性来控制。在非主队列中,设置最大并发数maxConcurrentOperationCount 该属性的设置需要在任务添加到队列中之前进行设置,如果最大并发数等于1,那么该队列是串行的,如果大于1那么该队列是并行的,系统的最大并发数有个默认的值,为 -1 如果该属性的值设置为0 那么不会执行该任务。

NSOperation可以调用start方法来执行任务,但默认是同步执行的,如果将NSOperation添加到NSOperationQueue(操作队列)中,系统会自动异步执行NSOperation中的操作。

NSOperation 和 NSOperationQueue_第5张图片
将操作添加到队列中

你可能感兴趣的:(NSOperation 和 NSOperationQueue)