NSOperation
2016-06-19 本文已影响144人
放肆肆肆
一 基本使用
-
相关概念
-
NSOPeration是对GCD的包装
-
两个核心概念 [队列+操作]
-
基本使用
- NSOperation本身是抽象类,只能有它的子类arget:
- 三个子类分别是:NSBlockOperation 和 NSInvocationOperation 以及自定义继承NSOperation的类
- NSOPeration和NSOperationQueue结合使用实现多线程并发
-
相关代码
1 NSInvocationOperation
//封装操作
第一个参数:目标对象
第二个参数:该操作要调用的方法,最多接受一个参数
第三个参数:调用方法传递的参数,如果方法不接受参数,那么就写nil
NSInvocationOperation *operation = [[NSInvocarionOperation alloc]initWithTarget:self selector @(run) object :nil];
//启动操作
[operation start];
2 NSBlockOperation
1.封装操作
//NSBlockOperation提供了一个类方法,在该类方法中封装操作
NSBlockOperation *operation = [NSBlockOPeration blickOperationWithBliock:^{
//在主程中执行
NSLog(@"-----download1---%@",[NSThread currentThread]);
}];
2.追加操作,追加的操作在子线程中执行
[operation addExecutionBlock:6{
NSLog(@"-----dowload2----%@",[NSThread currentThread])
}];
[operation addExecutionBlock:^{
NSLog (@"---download3---%@",[NSThread currentThread]);
}];
3.启动执行操作
[operation start];
-
自定义NSOperation]
自定义的NSOperation,通过重写内部的main方法实现封装操作 -(viod)main { NSLog (@"---main---%@",[NSThread currenThread); } //实例化一个自定义操作对象 WWKOperation *op = [[WWKOperation alloc]init]; //执行操作 [op start];