面试Swift&Objective-C程序员

iOS 多线程 - NSOperation

2016-05-06  本文已影响171人  hrscy

一、简介

二、NSOperation 的子类

三、具体使用

1.NSInvocationOperation 的使用

-(id)initWithTarget:(id)target selector:(SEL)sel object:(id)arg;
-(void)start;

一旦执行操作,就会调用 targetsel 方法

注意:

2.NSBlockOperation 的使用

+(id)blockOperationWithBlock:(void (^)(void))block;
addExecutionBlock:(void (^)(void))block;

注意:
只要 NSBlockOperation 封装的操作数 > 1 ,就会异步执行操作

3.NSOperationQueue 的使用

-(void)addOperation:(NSOperation *)op;
-(void)addOperationWithBlock:(void (^)(void))block;

4.最大并发数

同时执行的任务数,比如,同时开 3 个线程执行 3 个任务,并发数就是 3

-(NSInteger)maxConcurrentOperationCount;
-(void)setMaxConcurrentOperationCount:(NSInteger);

5.队列的取消、暂停、恢复

-(void)cancelAllOperations;

注意:也可以调用 NSOperation-(void)cancel方法取消单个操作

-(void)setSuspended:(BOOL)b;// YES 代表暂停队列,NO 代表恢复队列
-(BOOL)isSuspended;

6.GCD的队列类型

7.NSOperationQueue的队列类型

8.NSOperation 其他用法

[operation addDependency:operationA]; //操作 B 依赖于操作 A
2016-05-06_16-58-35.png

注意:不能相互依赖,比如,A 依赖 B,B 依赖 A

-(void (^)(void))completionBlock;
-(void)setCompletionBlock:(void (^)(void))block;
无沙盒缓存 有沙盒缓存
上一篇下一篇

猜你喜欢

热点阅读