NSInvocationOperation
NSInvocationOperation * op = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(invocation) object:nil];
[op start];
-(void)invocation {
NSLog(@"线程 ------%@",[NSThread currentThread]);
NSLog(@"open");
}
线程 ------<NSThread: 0x60000212cc80>{number = 1, name = main}
open
不具备开启线程的能力 顺序执行
NSBlockOperation
NSBlockOperation * opOne = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"线程 ------%@",[NSThread currentThread]);
NSLog(@"一号开始执行");
}];
[opOne addExecutionBlock:^{
NSLog(@"线程1 ------%@",[NSThread currentThread]);
NSLog(@"二号开始执行");
}];
线程1 ------<NSThread: 0x6000000f6ac0>{number = 3, name = (null)}
线程 ------<NSThread: 0x6000000aca00>{number = 1, name = main}
二号开始执行
一号开始执行
可以看出来 添加了 addExecutionBlock 具备开启子线程的能力 任务全部执行完毕 才会结束 开启多少子线程 由系统决定
网友评论