文档章节

iOS multiple threads(2)------NSOperation NSOper...

辉兔狼
 辉兔狼
发布于 2013/03/18 15:38
字数 583
阅读 368
收藏 1
    首先,简单区分这几个类关键词:
NSOperation:可以理解程一个“操作”,一个要做的事件,感觉类似如java中的runnable,NSOperation只有添加到线程队列中才能被执行。
NSOperationQueue:可以勉强的叫做线程队列吧,他是专门管理添加到他里面NSOperation,然后根据情况,开启线程执行对应的“操作”,java作用,也有对应的类,或者我们自己写一个队列。
NSOperationQueue的目的就是多线程管理,一个NSOperationQueue 操作队列,就相当于一个线程管理器,而非一个线程。因为你可以设置这个线程管理器内可以并行运行的的线程数量等等。

下面是建立并初始化一个操作队列,而且我们可以设置这个队列每次被处理的“操作(NSOperation)”数量:

NSOperationQueue *aQ = [[NSOperationQueue alloc] init];
[aQ setMaxConcurrentOperationCount:10];
    然后,我们后面就可以建立需要操作的任务啦,然后加到操作队列中,就可以实现队多线程啦,ios中,使用NSInvocationOperation(NSOperation的子类)是最简单的多线程编程方式,在iPhone编程中是经常被用到的

/创建一个NSInvocationOperation对象,并初始化到方法
    //在这里,selector参数后的值是你想在另外一个线程中运行的方法(函数,Method)
    //在这里,object后的值是想传递给前面方法的数据
NSInvocationOperation* theOp = [[NSInvocationOperation alloc] initWithTarget:self
                    selector:@selector(myTaskMethod:) object:data];
 
    // 下面将我们建立的操作“Operation”加入到本地程序的共享队列中(加入后方法就会立刻被执行)
    // 更多的时候是由我们自己建立“操作”队列
[aQ addOperation:theOp];
// 这个是真正运行在另外一个线程的“方法”
- (void)myTaskMethod:(id)data
{
    // Perform the task.
}
    简单介绍之后,其实可以发现这种方法是非常简单的。很多的时候我们使用多线程仅仅是为了防止主线程堵塞,而NSInvocationOperation就是最简单的多线程编程,故该中方式在iPhone编程中是经常被用到的。
复杂点的做法是,自己写一个NSOperation的子类,类似于java中的,实现runnable接口,里面可以加更多复杂的逻辑,然后将他加到NSOperationQueue中,就ok啦

© 著作权归作者所有

共有 人打赏支持
辉兔狼

辉兔狼

粉丝 29
博文 52
码字总数 35345
作品 1
海淀
高级程序员
私信 提问
iOS多线程编程之NSThread的使用

iOS多线程编程之NSThread的使用 1、简介: 1.1 iOS有三种多线程编程的技术,分别是: 1.、NSThread 2、Cocoa NSOperation (iOS多线程编程之NSOperation和NSOperationQueue的使用) 3、GCD 全...

malawo
2013/09/05
0
0
关于iOS多线程,这边勉强可以看看(OC&Swift)

iOS开发多线程总是绕不过的坎,看了很多前辈们优秀的文章,如:关于iOS多线程,我说,你听,没准你就懂了!、谈iOS多线程(NSThread、NSOperation、GCD)编程、iOS多线程:『GCD』详尽总结、i...

Andy_Ron
2018/08/26
0
0
文檔翻譯:NSOperation Class Reference

NSOperation Class Reference NSOperation 類參考 http://db.tt/A1xLPVXq。(排版較佳) 原文網址:http://developer.apple.com/documentation/Cocoa/Reference/NSOperation_class/Referenc......

KSHime
2012/09/18
0
0
iOS multiple threads(2)------GCD

前面一二也说过,iOS中多线程编程工具主要有: NSThread NSOperation GCD 这三种方法都简单易用,各有千秋.同NSThread相比,GCD的运行效率更高,开发更简单。 但GCD确是诱惑力的,因为其本身是...

辉兔狼
2013/03/24
0
0
iOS多线程编程之NSThread的使用

1、简介: 1.1 iOS有三种多线程编程的技术,分别是: 1.、NSThread 2、Cocoa NSOperation (iOS多线程编程之NSOperation和NSOperationQueue的使用) 3、GCD 全称:Grand Central Dispatch( ...

雾灵峰
2012/12/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

手把手教你运用深度学习构建视频人脸识别模型(Python实现)

本文将展示如何使用开源工具完成一个人脸识别的算法。 引言 “计算机视觉和机器学习已经开始腾飞,但是大多数人并不清楚计算机在识别一张图片的时候,它到底看到了什么。”——麦克.克里奇 ...

孟飞阳
6分钟前
0
0
阿里的Spring框架面试题到底有多难?这五大问题你又掌握了多少!

前言 还在机械地打代码?我们很多开发者在开发 Spring 的程序的时候,很多的情况下,都是被动的接受了前辈们为我们做好的 Spring 特性案例。这样以来,确实在很大的程度上减少了我们开发的成...

java知识分子
9分钟前
0
0
Node 框架接入 ELK 实践总结

本文由云+社区发表 作者:J2X 我们都有过上机器查日志的经历,当集群数量增多的时候,这种原始的操作带来的低效率不仅给我们定位现网问题带来极大的挑战,同时,我们也无法对我们服务框架的各...

腾讯云加社区
10分钟前
0
0
matlab-线性代数 判断 两矩阵是否相同

  matlab : R2018a 64bit     OS : Windows 10 x64 typesetting : Markdown    blog : my.oschina.net/zhichengjiu    gitee : gitee.com/zhichengjiu   code clearclca=[1 1;2......

志成就
16分钟前
0
0
轻松在Linux上发送邮件,经验证接收可靠

1. 安装mailx,使用mail命令直接发送 yum install mailx 2、编辑配置文件 在126邮箱中申请开通客户端协议权限 如下图: vim /etc/mail.rc set from=xxxx@126.com set smtp=smtp.126.com set...

echx
26分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部