标签:
NSOperation 是一个基类 (抽象类(比如NSObject))不能够直接使用 必须使用它的子类 它默认是在当前线程进行操作
常与 NSOperationQueue(线程队列)一起使用,在与线程队列一起使用的时候会自动开辟线程进行操作,不用手动操作(*****)。 如果只是单独使用 NSOperation 必须手动启用
NSOperation 系统提供了两个子类NSInvocationOperation,NSBlockOperation。
单一使用 Operation 他是同步执行
NSBlockOperation的操作数大于1的时候会开辟线程去执行操作
初始化:NSInvocationOperation
当它单独使用的时候记得使用手动操作:[invocation start];
invocation实现的方法:
-(void)act:(id)sender{
NSLog(@"%@\n%@",[NSThread currentThread],sender);
//,[NSThread currentThread] 是哪一个线程
}
初始化NSBlockOperation:
添加操作
NSBlockOperation的操作数大于1的时候会开辟线程去执行操作 [blockOperation addExecutionBlock:^{ [self act:@" 添加操作”]; }];
单独使用同样需要使用手动操作:
[blockOperation start];
NSOperationQueue(线程队列) 管理线程 (默认会开辟线程去执行)
不用手动去启动线程(****)
初始化NSOperationQueue
设置线程队列的 最大并发数 (最多可以有效几个操作 ,同时操作),即:如果 queque.maxConcurrentOperationCount = 0 ,那就只有主线程在执行
queque.maxConcurrentOperationCount = 2;
添加操作(当添加操作的时候不需要再去手动操作)
[queque addOperation:invocation];(当invocation添加到queque时,把之前的[invocation start];注释掉)
标签:
原文地址:http://www.cnblogs.com/popper123/p/4764286.html