多线程NSOperation
弥补gcd的一些问题:
1)下载为例子:如果gcd放到队列中的block操作面对网络有问题,block之外无法取消block之内操作
1. 面向oc的接口;基于gcd的多线程解决方案
2. queue队列的类型:主队列/非主队列
3. 任务执行的方式:同步/异步
1. 无法直接使用NSOperation类
2. 只能使用两个子类:
1. 同步:
使用NSBlockOperation的addExecutionBlock方法,如果是一个操作会在主线程中做
2. 异步
1) 使用NSBlockOperation的addExecutionBlock方法,如果是多个操作,第一个会在主线程中做;剩余的会在子线程中做
2)将NSBlockOperation加入到非主队列中,会自动启动子线程来执行;但是不确定同一时间会启动多少个线程来执行
for (int i=0; i<3; i++) {
NSLog(@"....%d....",i);
}
}
//如果多个,剩下的都会在子线程中执行
//1.创建NSBlockOperation
NSBlockOperation *operation = [[NSBlockOperation alloc] init];
//2.添加要执行的任务
[operation addExecutionBlock:^{
NSLog(@"下载图片一: %@", [NSThread currentThread]);
[self displayss];
}];
[operation addExecutionBlock:^{
NSLog(@"下载图片二: %@", [NSThread currentThread]);
[self displayss];
}];
[operation addExecutionBlock:^{
NSLog(@"下载图片三: %@", [NSThread currentThread]);
[self displayss];
}];
1. 主队列(添加到主队列中的操作都会在主线程中执行):[NSOperationQueue mainQueue]
添加操作到队列中的两种方式:
1. 使用addOperationQueue方法
2. 使用addOperationWithBlock: (^{})方法
取消/暂停/恢复操作:
1. 取消所有操作:cancelAllOperations
2. 暂停所有操作:[queue setSuspended:YES];
3. 恢复所有操作:[queue setSuspended:NO];
操作依赖的设置:
[operation addDependency: otherOperation];
多线程NSOperation的更多相关文章
- iOS多线程 NSOperation的用法
上一篇写了 GCD 的使用,接下来就了解一下 NSOperation ,NSOperation是苹果对 GCD 的 OC 版的一个封装,但是相对于GCD来说可控性更强,并且可以加入操作依赖. NSOp ...
- iOS边练边学--多线程NSOperation介绍,子类实现多线程的介绍(任务和队列),队列的取消、暂停(挂起)和恢复,操作依赖与线程间的通信
一.NSOperation NSOperation和NSOperationQueue实现多线程的具体步骤 先将需要执行的操作封装到一个NSOperation对象中 然后将NSOperation对象添加 ...
- iOS多线程--NSOperation 浅显易懂
NSOperation是基于GCD的一套多线程实现方案,和GCD一样,线程的生命周期是由系统来自动管理的,不用像NSThread和Pthread一样让程序员手动管理.相对于GCD来说,它更加地面向对象 ...
- iOS开发:Swift多线程NSOperation的使用
介绍: NSOperation是基于GCD实现,封装了一些更为简单实用的功能,因为GCD的线程生命周期是自动管理,所以NSOperation也是自动管理.NSOperation配合NSOperatio ...
- iOS多线程--NSOperation
NSOperation是基于GCD的一套多线程实现方案,和GCD一样,线程的生命周期是由系统来自动管理的,不用像NSThread和Pthread一样让程序员手动管理.相对于GCD来说,它更加地面向对象 ...
- iOS之多线程NSOperation
目前在 iOS 和 OS X 中有两套先进的同步 API 可供我们使用:NSOperation 和 GCD .其中 GCD 是基于 C 的底层的 API ,而 NSOperation 则是 GCD 实 ...
- iOS 多线程 NSOperation、NSOperationQueue
1. NSOperation.NSOperationQueue 简介 NSOperation.NSOperationQueue 是苹果提供给我们的一套多线程解决方案.实际上 NSOperation.N ...
- iOS 开发多线程 —— NSOperation
本文是根据文顶顶老师的博客学习而来,转载地址:http://www.cnblogs.com/wendingding/p/3809042.html 一.NSOperation简介 1.简单说明 NSOp ...
- iOS中的多线程 NSOperation
在ios中,使用多线程有三种方式,分别是:NSThread.NSOperation和NSOperationQueue.GCD,在本节,主要讲解一下NSOperation的使用. NSOperation ...
随机推荐
- AM335x(TQ335x)学习笔记——挂载Ramdisk
上篇文章中我们已经能够通过u-boot启动内核了,但是没有能够启动成功,从内核的log中可以看出,内核启动失败的原因是没有挂载到root文件系统,本文将使用busybox制作根文件系统并打包成ramd ...
- SQL Server 触发器:表的特定字段更新时,触发Update触发器
create trigger TR_MasterTable_Updateon MasterTableafter updateas if update ([Type])--当Type字段被更新时,才会触 ...
- java.lang.ExceptionInInitializerError的原因(转)
这个错误是说变量初始化出现问题,通常出现在静态变量尤其是单例模式.这种问题往往是初始化顺序不对造成的,下面举个简单的例子. import java.util.HashMap; import java. ...
- MapReduce:Shuffle过程的流程
Shuffle过程是MapReduce的核心,Shuffle描述着数据从map task输出到reduce task输入的这段过程. 1.map端
- 问题:关于一个贴友的js留言板的实现
需求:用js做一个简单的留言板效果 html部分: 1: <!DOCTYPE> 2: <html lang="zh-en"> 3: <head> ...
- uva 11107 Life Forms
题意:给你N个串,求一个串在大于等于N/2的模板串中连续出现.如果有多解按字典序最小输出. 白书模板题.二分答案+合并模板串成一个新串,扫秒新串的height数组. 考查后缀数组+LCP #inclu ...
- USB模式安装CentOS6.4_minimal
首先说明一下我遇到的3个问题 1. 由于机器没有光驱,所以只能USB安装 2.由于CentOS5.0+才对USB安装支持比较好,所以USB安装,建议安装CentOS5.0+以上的版本 3.由于FAT3 ...
- debian 显示器使用自定义分辨率
比如你要使用 1440x900 的自定义分辨率,先利用 cvt 计算一个新的 modeline $ cvt 1440 900 输出为: # 1440x900 59.89 Hz (CVT 1.30MA ...
- hdoj 1234 开门人和关门人
开门人和关门人 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) #include ...
- nyoj 115 城市平乱
城市平乱 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 南将军统领着N个部队,这N个部队分别驻扎在N个不同的城市. 他在用这N个部队维护着M个城市的治安,这M个城市 ...