多线程之 NSOperation
NSOperation
优点:不需要关心线程管理,数据同步的事情,可以把精力放在自己需要执行的操作上。
NSOperation实例封装了需要执行的操作和执行操作所需的数据,并且能够以并发或非并发的方式执行这个操作。
- NSOperation的作用:配合使用NSOperation和NSOperationQueue也能实现多线程编程取消操作
- NSOperation和NSOperationQueue实现多线程的具体步骤:
NSInvocationOperation *operation=[[NSInvocationOperationalloc]initWithTarget:selfselector:@selector(run1) object:nil];
//执行操作
[operation start];
//注意:操作对象默认在主线程中执行,只有添加到队列中才会开启新的线程。即默认情况下,如果操作没有放到队列queue中,都是同步执行。只有将NSOperation放到一个NSOperationQueue中,才会异步执行操作
NSInvocationOperation *operation1 = [[NSInvocationOperationalloc] initWithTarget:selfselector:@selector(run1) object:nil];
[operation1 start];
//2.NSBlockOperation
NSBlockOperation *block=[NSBlockOperationblockOperationWithBlock:^{
NSLog(@"block操作:%@",[NSThreadcurrentThread]);
}];
//在NSBlockOperation对象中添加一个操作,如果NSBlockOperation对象至少包含了多个操作,有一个是主线程中执行,其他均在子线程中
[block addExecutionBlock:^{
NSLog(@"block操作1:%@",[NSThreadcurrentThread ]);
}];
[block addExecutionBlock:^{
NSLog(@"block操作2:%@",[NSThreadcurrentThread ]);
}];
[block addExecutionBlock:^{
NSLog(@"block操作3:%@",[NSThreadcurrentThread ]);
}];
[block start];
//注意:添加操作要放在start之前
//创建队列:将操作放入队列中(主队列除外)默认的在子线程中执行,且不用手动start
NSOperationQueue *queue=[[NSOperationQueuealloc]init]; //NSOperationQueue的作⽤:NSOperation可以调⽤start⽅法来执⾏任务,但默认是同步执行的。如果将NSOperation添加到NSOperationQueue(操作队列)中,系统会自动异步执行NSOperation中的操作。添加操作到NSOperationQueue中,自动执行操作,自动开启线程
NSInvocationOperation *qoperation=[[NSInvocationOperationalloc]initWithTarget:selfselector:@selector(run2) object:nil ];
[queue addOperation:qoperation];
[queue addOperationWithBlock:^{
NSLog(@"block操作队列:%@",[NSThreadcurrentThread ]);
}];
}
-(void)run1{
NSLog(@"22222%@",[NSThreadcurrentThread]);
}
-(void)run2{
NSLog(@"队列中执行:%@",[NSThreadcurrentThread]);
}
转载于:https://www.cnblogs.com/wyhwyh2114/p/5033691.html
多线程之 NSOperation相关推荐
- iOS多线程全套:线程生命周期,多线程的四种解决方案,线程安全问题,GCD的使用,NSOperation的使用(下)
2017-07-08 remember17 Cocoa开发者社区 7NSOperation的理解与使用 No.1:NSOperation简介 NSOperation是基于GCD之上的更高一层封装,NS ...
- iOS多线程:『NSOperation、NSOperationQueue』详尽总结
2019独角兽企业重金招聘Python工程师标准>>> iOS多线程:『NSOperation.NSOperationQueue』详尽总结 转载: 原地址https://www.ji ...
- IOS学习之多线程(9)--NSOperation简单介绍
转载自 http://www.cnblogs.com/wendingding/p/3809042.html 一.NSOperation简介 1.简单说明 NSOperation的作:配合使用NSOpe ...
- ios多线程 -- NSOperation 简介
NSOperation的作⽤:配合使用NSOperation和NSOperationQueue也能实现多线程编程 NSOperation和NSOperationQueue实现多线程的具体步骤: 1)先 ...
- 浅谈多线程——NSOperation
iOS中多线程相关方法--NSOperation及其相关类: NSOperation NSBlockOperation NSInvocationOperation NSOperationQueue 1 ...
- MaciOS之多线程(转)
转自 https://github.com/kejinlu/objc-doc/blob/master/%E5%A4%9A%E7%BA%BF%E7%A8%8B.md#macios%E4%B9%8B%E5 ...
- iOS多线程详解:实践篇
iOS多线程实践中,常用的就是子线程执行耗时操作,然后回到主线程刷新UI.在iOS中每个进程启动后都会建立一个主线程(UI线程),这个线程是其他线程的父线程.由于在iOS中除了主线程,其他子线程是独立 ...
- 多线程实现的几种方式
多线程实现一共有四种方式,如下图: - pthread的使用 - 定义pthread typedef __darwin_pthread_t pthread_t; - 创建pthread int pth ...
- 多线程学习笔记3-NSOperationQueue
NSOperationQueue NSOperation的作用 配合使用NSOperation和NSOperationQueue也能实现多线程编程 NSOperation和NSOperationQue ...
- 学习多线程 - iOS
实现多线程的方案一共有四种:pthread,NSThread,GCD,NSOperation 一.线程的状态与生命周期 新建:实例化线程对象 就绪:向线程对象发送start消息,线程对象就被加入到可调 ...
最新文章
- 学生服务器选用什么系统,学生云服务器系统选择
- IE6下绝对定位的DIV被相对定位的DIV挡住的问题
- Liunx 查看硬件信息
- 在非UI线程中显示Toast
- wota dance
- 10个开源工业检测数据集汇总
- 后端数据成功返回 页面不渲染_如何统计页面访问量,看这一篇就够了
- windows 安装leopard方法
- mysql巡检常用命令_总结Linux下系统巡检常用命令
- 无边框对话框拖动改变大小的实现总结
- 微信公众号自定义菜单
- matlab命令行运行,命令行运行matlab
- html中加入标题居中,在html标题标记中居中的div元素
- android客服功能实现,基于环信实现android客户端客服聊天功能
- 操作系统实验一到实验九合集(哈工大李治军)
- 微信公众号主体注销了,如何办理账号迁移?
- Android 显示后台返回富文本rgb色值适配问题
- SwiftUI的多列列表
- 节假日api--java调用与获取数据
- Metasploit用法大全