Ios面试复习--NSOpration

对GCD的面向对象的封装 

Ios面试复习--NSOpration_第1张图片
NSOperation

1.NSInvocationOperation

默认在住线程

Ios面试复习--NSOpration_第2张图片

2.NSBlockOperation

默认在主线程  可添加额外任务在子线程

Ios面试复习--NSOpration_第3张图片

3.NSOperationQueue

Queue 分为主队列

    [NSOperationQueue mainQueue]      //凡是添加到主队列中的任务(NSOperation) 都会放在住线程中进行

和其他队列(并发队列 串行队列)

    [[NSOperationQueue alloc]init] 默认是并发队列 //凡是添加到其他队列中的任务(NSOperation) 都会放在子线程中进行

添加一个并发队列 并且添加进三个Operation 

Ios面试复习--NSOpration_第4张图片

得到结果如下,一个三个Operation都在并发子线程

Ios面试复习--NSOpration_第5张图片

4.同步执行和异步执行

NSOperation 对象 start 方法开启 默认是同步执行的

创建NSOperationQueue  并将 NSOperation 对象添加进Queue 后 是异步执行的

4.串行队列和并发队列

通过设置NSOperationQueue 对象的最大并发操作数,maxConcurrentOperationCount 来控制最大并发数

例如设置最大并发数后X,NSOperationQueue 内部自己决定线程的调度 新开多少条队列 多少条队列 但是每次执行并发数为X

当 maxConcurrentOperationCount=1 时 为串行队列

5.队列的挂起(暂停) 和取消

NSOperationQueue 对象的 supended 属性 控制是否继续该队列进行

NSOperationQueue 对象的  cancelAllOperations  取消队列执行

但是!

无论是挂起还是取消

都只能终止线程的继续 而线程内部的耗时操作 会被继续执行



你可能感兴趣的:(Ios面试复习--NSOpration)