NSOperation/NSOperationQueue详细使用介绍
(1)先将需要执行的操作封装到一个NSInvocationOperation对象中
(2)然后将NSInvocationOperation对象添加到NSOperationQueue中
(3)系统会自动将NSOperationQueue中的NSInvocationOperation取出来
(4)将取出的NSInvocationOperation封装的操作放到N条新线程中执行
1、NSInvocationOperation *operation1 = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(run) object:nil]; 创建任
务
2、NSOperationQueue *queue = [[NSOperationQueue alloc] init]; 创建队列
queue.maxConcurrentOperationCount = 2; 设置最大并发线程数
3、[queue addOperation:operation1]; 向队列添加任务,一个任务可以有多个操作
4、operation.completionBlock = ^{
// ...下载完图片后想做事情
NSLog(@"NSBlockOperation------下载图片完毕---%@", [NSThread currentThread]);
}; 一个任务执行完毕之后需要做的事
5、[operation2 addDependency:operation3]; 设置任务间依赖关系,operation3执行完毕之后才可以执行operation2,但是不可以循环依赖
6、[queue addOperation:operation1];添加任务到队列,自动执行操作, 自动开启线程
7、[operation start]; 不将任务放入队列,直接执行操作(默认情况下, 如果操作没有放到队列queue中, 都是同步执行,就是在调用start方法的那个线程中直接执行
)
9、[NSThread sleepForTimeInterval:0.1] 线程休眠
三、NSBlockOperation(块操作用法)
(1)先将需要执行的操作封装到一个NSBlockOperation对象中
(2)然后将NSBlockOperation对象添加到NSOperationQueue中
(3)系统会自动将NSOperationQueue中的NSBlockOperation取出来
(4)将取出的NSBlockOperation封装的操作放到N条新线程中执行
1、NSBlockOperation *operation1 = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"NSBlockOperation------下载图片1---%@", [NSThread currentThread]);
}]; 封装一个操作
[operation1 addExecutionBlock:^{
NSLog(@"NSBlockOperation------下载图片22---%@", [NSThread currentThread]);
}];也可以通过这种方式添加操作
2、NSOperationQueue *queue = [[NSOperationQueue alloc] init]; 创建队列
queue.maxConcurrentOperationCount = 2; 设置最大并发线程数
3、[queue addOperation:operation1]; 向队列添加任务,一个任务可以有多个操作
[queue addOperationWithBlock:^{
NSLog(@"NSBlockOperation------下载图片3---%@", [NSThread currentThread]);
}]; 也可以这种方式直接向队列添加任务
4、operation.completionBlock = ^{
// ...下载完图片后想做事情
NSLog(@"NSBlockOperation------下载图片完毕---%@", [NSThread currentThread]);
}; 一个任务执行完毕之后需要做的事
5、NSInvocationOperation *operation2 = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(run) object:nil]; 创建任
务
6、[operation2 addDependency:operation3]; 设置任务间依赖关系,operation3执行完毕之后才可以执行operation2,但是不可以循环依赖
7、[queue addOperation:operation1];添加任务到队列,自动执行操作, 自动开启线程
8、[operation start]; 不将任务放入队列,直接执行操作(默认情况下, 如果操作没有放到队列queue中, 都是同步执行,就是在调用start方法的那个线程中直接执行
)
9、[NSThread sleepForTimeInterval:0.1] 线程休眠
NSOperation/NSOperationQueue详细使用介绍的更多相关文章
- iOS中的多线程NSThread/GCD/NSOperation & NSOperationQueue
iOS多线程有四套多线程方案: Pthreads NSThread GCD NSOperation & NSOperationQueue 接下来我来一个一个介绍他们 Pthreads 在类Un ...
- IOS多线程(NSOperation,NSOperationQueue)
含义:NSOperation,NSOperationQueue是什么. The NSOperation class is an abstract class you use to encapsulat ...
- Window VNC远程控制LINUX:VNC详细配置介绍
Window VNC远程控制LINUX:VNC详细配置介绍 //---------------------------------------vnc linux下的详细配置 1.VNC的启动/停止/重 ...
- ThinkPHP 自动创建数据、自动验证、自动完成详细例子介绍(十九)
原文:ThinkPHP 自动创建数据.自动验证.自动完成详细例子介绍(十九) 1:自动创建数据 //$name=$_POST['name']; //$password=$_POST['password ...
- [原]Redis详细配置介绍
Redis详细配置介绍 # redis 配置文件示例 # 当你需要为某个配置项指定内存大小的时候,必须要带上单位, # 通常的格式就是 1k 5gb 4m 等酱紫: # # 1k => 1000 ...
- 原来你是这样的BERT,i了i了! —— 超详细BERT介绍(一)BERT主模型的结构及其组件
原来你是这样的BERT,i了i了! -- 超详细BERT介绍(一)BERT主模型的结构及其组件 BERT(Bidirectional Encoder Representations from Tran ...
- iOS-申请邓白氏编码的超详细流程介绍
导读 11.22号要申请苹果公司开发者账号,所以当天下午申请了邓白氏编码,昨天邓白氏编码下来了,这里就做一下记录,分享给大家. 概览 11.22提交的邓白氏编码申请,11.28(礼拜一)华夏邓白氏发来 ...
- iOS—如何申请苹果公司开发者账号流程详细图文介绍(包括邓白氏编码的申请方法详细介绍)
我们要申请开发者账号,首先就需要先注册一个苹果的apple id,然后再这个账号的基础上去继续,这个相信大家都知道 这是申请appleid的地址:https://appleid.apple.com/a ...
- IOS NSOperation&NSOperationQueue
NSOperation与NSOperationQueue的基本理论如下: 1.NSOperationQueue代表一个FIFO的队列,它负责管理系统提交的多个NSOperation,NSOp ...
随机推荐
- centos6.5 安装JDK
今天在自己的centos机子上安装jdk,发现以前的教程都比较旧了,很多东西都过时了.今天把自己安装的感受写一下. 判断是否安装 首先,我们得判断机子上是不是安装了jdk,好多人推荐使用java -v ...
- CSDN_帖子__WapPc
CSDN的帖子,Wap版 和 PC版 网址对应关系: 1. 举个例子: 手机版的网址: http://bbs.csdn.net/wap/topics/391891319 PC版的网址: http:// ...
- Python快速学习-获取对象信息
1type() 获取对象的基本类型,判断两个对象类型. 2types 判断对象是否是函数,使用前要引入import types 3isinstance() 判断class类型,判断一个变量是否是某种类 ...
- js中介者模式
中介者模式(Mediator),用一个中介者对象来封装一系列对象交互.中介者使各对象不需要显示地相互引用,从而使其松散,而且可以独立地改变它们之间的交互. 从生活中例子自然知道,中介者模式设计两个具体 ...
- hzau 1199 Little Red Riding Hood
1199: Little Red Riding Hood Time Limit: 1 Sec Memory Limit: 1280 MBSubmit: 918 Solved: 158[Submit ...
- 如果看看机器ip和域名ip
1.如果查看一个机器IP ifconfig或hostname -i //linux ipconfig //windows 2.查看一个域名对应ip ping www.baidu.com 下面会显示域名 ...
- [转载] Java开发在线编辑Word同时实现全文检索
一.背景介绍 Word文档与日常办公密不可分,在实际应用中,当某一文档服务器中有很多Word文档,假如有成千上万个文档时,用户查找打开包含某些指定关键字的文档就变得很困难,一般情况下能想到的解决方案是 ...
- xss攻击的分类
1.反射型XSS 原理: 通过在页面上植入恶意链接,诱使用户点击,执行js脚本,所谓反射型XSS就是将用户输入的数据(恶意用户输入的js脚本),“反射”到浏览器执行. 实例: php源码: <? ...
- angular复选框式js树形菜单(二)
删除(过滤)树形结构某一个子节点: function filterTreeData(treeData){ angular.forEach(treeData,function(item){ if (it ...
- hdu-1102-Constructing Roads(Prim算法模板)
题目链接 /* Name:hdu-1102-Constructing Roads Copyright: Author: Date: 2018/4/18 9:35:08 Description: pr ...