多线程之NSOperation
来源:互联网 发布:js脚本程序 编辑:程序博客网 时间:2024/04/28 15:37
一。NSOperation的作用:配合使用NSOperation和NSOperationQueue也能实现多线程编程
二。NSOperation和NSOperationQueue实现多线程的具体步骤:
(1)先将需要执行的操作封装到一个NSOperation对象中
(2)然后将NSOperation对象添加到NSOperationQueue中
(3)系统会⾃动将NSOperationQueue中的NSOperation取出来
(4)将取出的NSOperation封装的操作放到⼀条新线程中执行
三。三NSOperation的子类
NSOperation是个抽象类,并不具备封装操作的能力,必须使⽤它的子类
使用NSOperation⼦类的方式有3种:
(1)NSInvocationOperation
(2)NSBlockOperation
(3)自定义子类继承NSOperation,实现内部相应的方法
四。NSInvocationOperation
//创建操作对象,封装要执行的任务
//NSInvocationOperation 封装操作
NSInvocationOperation *operation=[[NSInvocationOperation alloc]initWithTarget:self selector:@selector(test) object:nil];
//执行操作
[operation start];
五。NSBlockOperation
//创建NSBlockOperation操作对象
NSBlockOperation *operation=[NSBlockOperation blockOperationWithBlock:^{
//......
}];
//添加操作
[operation addExecutionBlock:^{
//....
}];
注意:只要NSBlockOperation封装的操作数 > 1,就会异步执行操作
六。NSOperationQueue
SOperationQueue的作⽤:NSOperation可以调⽤start⽅法来执⾏任务,但默认是同步执行的
如果将NSOperation添加到NSOperationQueue(操作队列)中,系统会自动异步执行NSOperation中的操作
添加操作到NSOperationQueue中,自动执行操作,自动开启线程
- (void)addOperation:(NSOperation *)op;
- (void)addOperationWithBlock:(void (^)(void))block;
NSOperationQueue * queue=[[NSOperationQueue alloc]init];
//把操作添加到队列中
//第一种方式
[queue addOperation:operation1];
[queue addOperation:operation2];
[queue addOperation:operation3];
//第二种方式
[queue addOperationWithBlock:^{
NSLog(@"NSBlockOperation3--4----%@",[NSThread currentThread]);
}];
- 多线程开发之NSOperation
- 多线程 之 NSOperation
- 多线程 之 NSOperation
- iOS多线程之NSOperation
- iOS多线程之NSOperation
- iOS多线程之NSOperation
- ios多线程之NSOperation
- IOS多线程之NSOperation
- 多线程之NSOperation
- 多线程之NSOperation
- 多线程之-NSOperation
- 多线程之-NSOperation
- 多线程之NSOperation对象
- 多线程之NSOperation(下)
- iOS多线程之NSOperation
- 多线程之NSOperation
- 多线程之NSOperation
- 《多线程之NSOPeration/NSOperationQueue》
- vector 容器迭代器(二)
- 淘宝传奇工程师多隆的程序世界
- 机器学习领域的几种主要学习方式
- c#连续输入整型数组(冒泡排序)
- set_include_path用法详解
- 多线程之NSOperation
- 基于protobuf的RPC实现
- Python笔记:pdb调试
- Qt中用ODBC连接excel中文乱码问题
- Solr查询语法笔记——相似文章
- 利用union判断系统的大小端
- 九天鸟问答社区:招募社区管理员和活跃用户
- ACM Coupons
- STL 源码分析 # stl_iterator & stl_iterator_base #