iOS学习笔记-116.多线程15——NSOperationQueue和自定义NSOperation合用实现多线程
来源:互联网 发布:醉游网络 编辑:程序博客网 时间:2024/06/13 12:23
- 多线程15NSOperationQueue和自定义NSOperation合用实现多线程
- 一自定义NSOperation
- 二NSOperationQueue和自定义NSOperation合用实现多线程
- 1 自定义NSOperation QWMOperation
- 2 代码示例
- 3 运行结果
- 三自定义NSOperation和NSThread的时候main方法说明
- 1 自定义 NSOperation 验证
- 11 QWMOperationm
- 12 代码示例
- 13 运行结果
- 2 自定义 QWMThread 验证
- 21 QWMThread
- 22 示例代码
- 23 运行结果
- 1 自定义 NSOperation 验证
多线程15——NSOperationQueue和自定义NSOperation合用实现多线程
一、自定义NSOperation
自定义NSOperation我们需要继承自 NSOperation 重写
- (void)main;
方法
二、NSOperationQueue和自定义NSOperation合用实现多线程
2.1 自定义NSOperation ( QWMOperation )
//// QWMOperation.m// 03_UIview85多线程_NSOperation//// Created by 杞文明 on 17/9/4.// Copyright © 2017年 杞文明. All rights reserved.//#import "QWMOperation.h"@implementation QWMOperation//告知要执行的任务是什么 , 自定义重新main方法,任务封装到main中//1.有利于代码隐蔽//2.复用性-(void)main{ [super main]; NSLog(@"----QWMOperation---main---%@",[NSThread currentThread]);}@end
2.2 代码示例
/*自定义操作 和 NSOperationQueue合用,实现多线程。自定义操作需要把任务封装到 main 方法中*/-(void)customOperationWithQueue{ //1.创建操作 QWMOperation *op1 = [[QWMOperation alloc]init]; QWMOperation *op2 = [[QWMOperation alloc]init]; QWMOperation *op3 = [[QWMOperation alloc]init]; //2.创建队列 NSOperationQueue *queue = [[NSOperationQueue alloc]init]; //3.添加任务到队列中 [queue addOperation:op1]; [queue addOperation:op2]; [queue addOperation:op3];}
2.3 运行结果
[15936:79761] ----QWMOperation---main---<NSThread: 0x60800007c500>{number = 4, name = (null)}[15936:79766] ----QWMOperation---main---<NSThread: 0x60000007c380>{number = 5, name = (null)}[15936:79765] ----QWMOperation---main---<NSThread: 0x60800007a340>{number = 3, name = (null)}
三、自定义NSOperation和NSThread的时候main方法说明
我们自定义NSOperation和NSThread的时候,任务的执行都是调用 start 来执行的,但是我们的任务都写在 main 中。我们猜想 我们的start方法应该是调用了 main 方法。
3.1 自定义 NSOperation 验证
3.1.1 QWMOperation.m
//// QWMOperation.m// 03_UIview85多线程_NSOperation//// Created by 杞文明 on 17/9/4.// Copyright © 2017年 杞文明. All rights reserved.//#import "QWMOperation.h"@implementation QWMOperation//告知要执行的任务是什么 , 自定义重新main方法,任务封装到main中//1.有利于代码隐蔽//2.复用性-(void)main{ [super main]; NSLog(@"----QWMOperation---main---%@",[NSThread currentThread]);}- (void)start{ NSLog(@"---start--start"); [super start]; NSLog(@"---start--end");}@end
3.1.2 代码示例
/*自定义操作 和 NSOperationQueue合用,实现多线程。自定义操作需要把任务封装到 main 方法中*/-(void)customOperationWithQueue{ //1.创建操作 QWMOperation *op1 = [[QWMOperation alloc]init]; //2.创建队列 NSOperationQueue *queue = [[NSOperationQueue alloc]init]; //3.添加任务到队列中 [queue addOperation:op1];}
3.1.3 运行结果
[17276:85179] ---start--start[17276:85179] ----QWMOperation---main---<NSThread: 0x608000076c80>{number = 3, name = (null)}[17276:85179] ---start--end
3.2 自定义 QWMThread 验证
3.2.1 QWMThread
//// QWMThread.m// 03_UIview85多线程_NSOperation//// Created by 杞文明 on 17/9/5.// Copyright © 2017年 杞文明. All rights reserved.//#import "QWMThread.h"@implementation QWMThread-(void)main{ [super main]; NSLog(@"----QWMThread---main---%@",[NSThread currentThread]);}- (void)start{ NSLog(@"---start--start---%@",[NSThread currentThread]); [super start]; NSLog(@"---start--end---%@",[NSThread currentThread]);}@end
3.2.2 示例代码
-(void)testThread{ QWMThread *thread = [[QWMThread alloc]init]; [thread start];}
3.2.3 运行结果
[18448:91233] ---start--start---<NSThread: 0x60800007b980>{number = 1, name = main}[18448:91233] ---start--end---<NSThread: 0x60800007b980>{number = 1, name = main}[18448:91471] ----QWMThread---main---<QWMThread: 0x600000262a00>{number = 3, name = (null)}
阅读全文
0 0
- iOS学习笔记-116.多线程15——NSOperationQueue和自定义NSOperation合用实现多线程
- iOS学习笔记-114.多线程13——NSOperationQueue和NSInvocationOperation合用实现多线程
- iOS学习笔记-115.多线程14——NSOperationQueue和NSBlockOperation合用实现多线程
- iOS学习笔记-119.多线程18——NSOperationQueue自定义NSOperation执行一个操作的取消
- 多线程—NSOperation和NSOperationQueue
- iOS多线程——NSOperation & NSOperationQueue
- iOS学习笔记15—Cocoa:NSOperation和NSOperationQueue
- 多线程NSOperation和NSOperationQueue
- Ios多线程编程:NSOperation和NSOperationQueue
- iOS多线程 NSOperation和NSOperationQueue的使用
- ios多线程之NSOperation和NSOperationQueue - hshd
- iOS多线程编程NSOperation和NSOperationQueue
- 使用NSOperation和NSOperationQueue用来实现多线程
- iOS多线程开发——NSOperation/NSOperationQueue浅析
- iOS多线程之NSOperation/NSOperationQueue
- 多线程(NSOperation和NSOperationQueue)
- 多线程(NSOperation和NSOperationQueue)
- 多线程之NSOperation和NSOperationQueue
- lintcode 骰子求和
- python 06
- 前端那些事
- NodeJS总结(三):一种快速生成序列的方法
- 内存管理那些事儿
- iOS学习笔记-116.多线程15——NSOperationQueue和自定义NSOperation合用实现多线程
- python用类实现队列功能
- L1-020. 帅到没朋友
- requests 库的安装
- [IDEA]习惯用的idea快捷方法
- JS Cookie
- javaSE-Day1-数组
- SVM解回归问题
- Jenkins安装、配置,常用中间件、插件构建实例