NSOperation的作用
配合使用NSOperation和NSOperationQueue也能实现多线程编程
NSOperation和NSOperationQueue也能实现多线程编程
NSOperation和NSOperationQueue实现多线程的具体步骤
先将需要执行的操作封装到一个NSOperation对象中
然后将NSOperation对象添加到NSOperationQueue中
系统会自动将NSOperationQueue中的NSOperation取出来
将取出的NSOperation封装的操作放到一条线程中执行
NSOperation的子类
NSOperation是个抽象类,并不具备封装操作的能力,必须使用它的子类
使用NSOperation子类的方式有3种
NSInvocationOperation
NSBlockOperation
自定义子类继承NSOperation,实现内部相应的方法
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
}
-(void)blockOperation{
NSBlockOperation *op = [NSBlockOperation blockOperationWithBlock:^{
//在主线程
NSLog(@"下载1======%@",[NSThread currentThread]);
}];
//在子线程
[op addExecutionBlock:^{
NSLog(@"下载2======%@",[NSThread currentThread]);
}];
[op addExecutionBlock:^{
NSLog(@"下载3======%@",[NSThread currentThread]);
}];
[op addExecutionBlock:^{
NSLog(@"下载4======%@",[NSThread currentThread]);
}];
[op start];
}
-(void)invocationOperation{
NSInvocationOperation*op = [[NSInvocationOperation alloc]initWithTarget:self selector:@selector(run) object:nil];
[op start];
}
-(void)run{
NSLog(@"----%@",[NSThread currentThread]);
}