iOS 多线程编程<八、NSOperation的基本使用>
2016-10-19 16:47
309 查看
一:NSOperation基本介绍
(1)NSOperation是对GCD的封装。(2)NSOperation是个抽象类,并不具备操作能力,必须使用他的子类。
(3)使用NSOperation的子类的方式有三种。分别是NSInvocationOperation,NSBlockOperation,以及自定义的类继承自NSOperation。具体代码如下:
<span style="font-size:14px;">// // ViewController.m // NSOperation // // Created by fe on 2016/10/19. // Copyright © 2016年 fe. All rights reserved. // #import "ViewController.h" #import "ZYFOperation.h" @interface ViewController () @end @implementation ViewController - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { [self inheritOperation]; } //子类继承自NSOperation,在.m文件中main函数中封装任务。不会开辟新线程,任务在主线程中调用。 - (void)inheritOperation { ZYFOperation *operation = [[ZYFOperation alloc] init]; [operation start]; } //blockOperation - (void)blockOperation { //封装操作,block块内的任务在主线程内执行 NSBlockOperation *operation1 = [NSBlockOperation blockOperationWithBlock:^{ NSLog(@"1----%s----%@",__func__,[NSThread currentThread]); }]; NSBlockOperation *operation2 = [NSBlockOperation blockOperationWithBlock:^{ NSLog(@"2----%s----%@",__func__,[NSThread currentThread]); }]; //追加任务,会开辟新的线程,block块内的任务在自线程调用 [operation1 addExecutionBlock:^{ NSLog(@"3----%s----%@",__func__,[NSThread currentThread]); }]; [operation1 addExecutionBlock:^{ NSLog(@"4----%s----%@",__func__,[NSThread currentThread]); }]; [operation2 addExecutionBlock:^{ NSLog(@"5----%s----%@",__func__,[NSThread currentThread]); }]; [operation2 addExecutionBlock:^{ NSLog(@"6----%s----%@",__func__,[NSThread currentThread]); }]; //启动线程 [operation1 start]; [operation2 start]; } //invocationOperation 不会开启新线程,任务在主线程执行 - (void)invocationOperation { /* 第一个参数:目标对象 第二个参数:选择器,要调用的方法 第三个参数:方法要传递的参数 */ NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(downloadTask) object:nil]; [operation start]; } - (void)downloadTask { NSLog(@"----%s----%@",__func__,[NSThread currentThread]); } @end</span><span style="font-size: 18px;"> </span>
<span style="font-size:14px;">// // ZYFOperation.m // NSOperation // // Created by fe on 2016/10/19. // Copyright © 2016年 fe. All rights reserved. // #import "ZYFOperation.h" @implementation ZYFOperation - (void)main { NSLog(@"----%s----%@",__func__,[NSThread currentThread]); } @end</span><span style="font-size:18px;"> </span>
相关文章推荐
- iOS 多线程编程<九、NSOperationQueue的基本使用>
- iOS core Data 详解-<1>基本使用
- iOS 多线程编程<十一、NSOperation操作依赖、监控>
- iOS NSOperation基本使用
- iOS 多线程编程<二、GCD基本用法>
- iOS 多线程编程<十三、NSOperation图片下载,SDWebImage底层实现原理>
- [笔记]iOS开发之多线程GCD和NSOperation基本使用
- iOS 多线程编程<十七、NSURLSession的基本用法>
- iOS NSThread和NSOperation的基本使用详解
- iOS 多线程编程<十六、RunLoop的基本应用>
- iOS 多线程编程<十二、NSOperation线程间通信>
- ios开发多线程一:了解-NSOperation的基本使用
- iOS开发>学无止境 - GCD的基本使用
- IOS开发--网络篇-->NSURLConnection基本使用
- iOS多线程编程之NSOperation和NSOperationQueue的使用 .
- iOS多线程编程之NSOperation和NSOperationQueue的使用
- ios--UITableview的基本使用方法
- iOS多线程编程之NSOperation和NSOperationQueue的使用
- UIScrollView基本使用。为其它添加多个button ||-iOS objective-c
- 《黑马程序员》java笔记->【03.3.0】包的基本使用