NSOperation :
1.–不需要关心线程管理,数据同步的事情,可以把精力放在自己需要执行的操作上
2.–NSOperation是面向对象的
工作原理:
1.用NSOperation封装要执行的操作
2.将创建好的NSOperation对象放NSOperationQueue中
3.启动OperationQueue开始新的线程执行队列中的操作
注意事项:
1.使用多线程时通常需要控制线程的并发数,因为线程会消耗系统资源,同时运行的线程过多,系统会变慢
2.使用以下方法可以控制并发的线程数量:
-(void)setMaxConcurrentOperationCount:(NSInteger)count;
NSInvocationOperation *iop1 = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(eat) object:nil];
NSInvocationOperation *iop2 = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(drink) object:nil];
//依赖关系,iop1依赖于iop2,那么就是一定在iop2执行完成后再执行iop1
[iop1 addDependency:iop2];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
//waitUntilFinished是否等待队列中的任务执行完后再去执行后面的代码
[queue addOperations:@[iop1,iop2] waitUntilFinished:NO];
//挂起主线程,等待所有的任务都完成,主线程才能继续
//[queue waitUntilAllOperationsAreFinished];
NSBlockOperation *bop = [NSBlockOperation blockOperationWithBlock:^{
[self eat];
}];