2016 - 1 -19 初探NSOperation
一:简介
1.NSOperation的作用:
配合NSOperation与NSOperationQueue也可以实现多线程。
2.NSOperation与NSOperationQueue实现多线程的步骤:
2.1现将需要执行的操作封装到NSOperation对象中
2.2然后将NSOperation添加到NSOperationQueue中
2.3系统会自动将NSOPerationQueue中的NSOPeration取出来
二:NSOPeration的子类
1.NSOPeration是个抽象类,并不具备封装操作的能力,必须使用他的子类。
2.使用NSOPeration子类的方式有三种:
2.1NSInvocationOpertation
2.2NSBlockOperating
2.3自定义子类继承NSOperation,实现内部相应方法
三:NSOPerationQueue
1.NSOperationQueue 的类型:
1.1主队列,通过 [NSOperationQueue mainQueue];可以获得。
1.2其他队列:串行队列,并发队列。 通过 [[NSOperationQueue alloc ] init];可以获得。
2.使用:
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
NSOperationQueue *opQ = [[NSOperationQueue alloc ] init];
NSInvocationOperation *op1 = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(run1) object:nil];
NSInvocationOperation *op2 = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(run2) object:nil];
[opQ addOperation:op1];// 会在内部调用[op1 start]这个方法并放入子线程内
[opQ addOperation:op2];
}
- (void)run1{
NSLog(@"1 ------ %@",[NSThread currentThread]);
}
- (void)run2{
NSLog(@"2 ------ %@",[NSThread currentThread]);
}
3.自定义Operation
3.1使用场景:当操作比较复杂时,就可以自定义一个NSOperation,然后将复杂的操作放在自定义operation里。
3.2实现:
3.2.1需要在自定义Operation中重写main函数:
如:
- (void)main
{
NSLog(@"%@-----------------自定义Operation",[NSThread currentThread]);
}
3.2.2创建自定义Operation 添加到队列里去:
ZZNSOpertation *op3 = [[ZZNSOpertation alloc] init];
[opQ addOperation:op3];
3.2.3打印结果:
2016-01-19 17:43:39.941 NSPerationQueue[16438:1477860] <NSThread: 0x7ff00a60d600>{number = 4, name = (null)}-----------------自定义Operation
2016 - 1 -19 初探NSOperation的更多相关文章
- 【读书笔记】2016.11.19 北航 《GDG 谷歌开发者大会》整理
2016.11.19 周六,我们在 北航参加了<GDG 谷歌开发者大会>,在web专场,聆听了谷歌公司的与会专家的技术分享. 中午免费的午餐,下午精美的下午茶,还有精湛的技术,都是我们队谷 ...
- U3D笔记11:47 2016/11/30-15:15 2016/12/19
11:47 2016/11/30Before you can load a level you have to add it to the list of levels used in the gam ...
- 学习图像算法阶段性总结 (附一键修图Demo) 2016.04.19更新demo
今天特别感慨,自己从决定研究图像处理,势必要做出一键修图算法. 经历了,三个多月的书籍积累,三个多月的算法调整以及优化. 人是一种奇怪的动物,当你做不到的时候,你以为做到了,自己会感觉很爽,很有成就感 ...
- 【我的书】Unity Shader的书 — 目录(2016.5.19最后一次更新)
写在前面 感谢所有点进来看的朋友.没错,我目前打算写一本关于Unity Shader的书. 出书的目的有下面几个: 总结我接触Unity Shader以来的历程,给其他人一个借鉴.我非常明白学Shad ...
- 2016.1.19 DEV Express控件GirdControl使用
103.GridControl中添加Button RunDesigner,添加一列,设置对应字段FiledName,ColumnEdit选择ButtonEdit,此时默认风格像下拉框,需调整属性: 在 ...
- Murano Weekly Meeting 2016.07.19
Meeting time: 2016.July.19 1:00~2:00 Chairperson: Kirill Zaitsev, from Mirantis Meeting summary: 1. ...
- 2016.8.19上午初中部NOIP普及组比赛总结
2016.8.19上午初中部NOIP普及组比赛总结 链接:https://jzoj.net/junior/#contest/home/1338 这次总结发得有点晚啊!我在这里解释一下, 因为浏览器的问 ...
- 2016 - 2 - 19 ARC内存管理知识总结(一,arc基本概念及alloc等方法的实现)
一. ARC的基本概念 1. 在objc中采用automatic reference counting 机制, 让编译器来进行内存管理.在降低程序崩溃,内存管理泄漏等风险的同时,很大程度减少了程序员的 ...
- 从零开始HTML(一 2016/9/19)
就是准备跟着W3C上的教程过一遍HTML啦,边看边记录更便于理解记忆吧~ 1.属性 HTML 标签可以拥有属性.属性提供了有关 HTML 元素的更多的信息.属性总是以名称/值对的形式出现,比如:nam ...
随机推荐
- 33-Url辅助方法
Url辅助方法与HTML辅助方法很类似,HTML辅助方法用来产生HTML标签,而Url辅助方法则负责用来产生Url网址. @Url.Action("About") 最后的输出网址如 ...
- Excel中的表单控件和active控件
EXCEL中有两种控件:表单控件和active控件 表单控件是excel5和excel95开始使用的,从excel97开始,active控件开始出现 关于表单控件和active控件的区别和使用范围,网 ...
- centos7 学习
1.centos pid文件: 在Linux系统的目录/var/run下面一般我们都会看到很多的*.pid文件.而且往往新安装的程序在运行后也会在/var/run目录下面产生自己的pid文件.那么这些 ...
- Servlet复习1: 一个简单的Servlet的使用
Servlet学习 1. Servlet与JSP的关系 2. Servlet的声明周期 3. 一个简单的Servlet的使用方法 什么是Servlet? 什么又是JSP? 继承了javax.servl ...
- 在Linux下安装aws命令行操作
使用安装包安装 环境: Linux, OS X, or Unix Python 2 version 2.6.5+ or Python 3 version 3.3+ 检查Python版本 $ pytho ...
- Error in Android Studio - "Default Activity Not Found"
Make sure you have specified the default activity in your AndroidManisfest.xml file. Within your def ...
- 454. 4Sum II ——查找本质:hash最快,二分次之
Given four lists A, B, C, D of integer values, compute how many tuples (i, j, k, l) there are such t ...
- 使用strace工具故障排查的5种简单方法
使用strace工具故障排查的5种简单方法 本文源自5 simple ways to troubleshoot using strace strace 是一个非常简单的工具,用来跟踪可执行程序的系统调 ...
- php验证用户名是否以字母开头与验证密码
验证用户名是否以字母开头与验证密码只能为数字和字母的组合代码三款三种常用验证函数 验证邮箱地址格式 验证密码只能为数字和字母的组合 验证用户名是否以字母开头代码哦,这是用户注册时或提交表单时会用的哦 ...
- event.srcElement在火狐(FireFox)下的兼容问题。搜索框获得焦点时默认文字变化
前言: 项目中用到了一个功能,搜索框里有默认的文字,当搜索框获得焦点时里面的默认文字消失,如果失去焦点时搜索框内容为空则让里面的内容回复默认!,. 实现: 很轻松的在网上找到了类似代码 $(" ...