Objective-C的NSOperation多线程类基本使用指南剖析.doc

Objective-C的NSOperation多线程类基本使用指南剖析.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Objective-C的NSOperation多线程类基本使用指南剖析

Objective-C的NSOperation多线程类基本使用指南 这篇文章主要介绍了Objective-C的NSOperation多线程类基本使用指南,谈到了Operations的执行顺序和并发量等设置操作,需要的朋友可以参考下 NSOperation 一、NSOperation 1.简介 NSOperation实例封装了需要执行的操作和执行操作所需的数据,并且能够以并发或非并发的方式执行这个操作。 NSOperation本身是抽象基类,因此必须使用它的子类,使用NSOperation子类的方式有2种: 1 Foundation框架提供了两个具体子类直接供我们使用:NSInvocationOperation和NSBlockOperation 2 自定义子类继承NSOperation,实现内部相应的方法 2.执行操作 NSOperation调用start方法即可开始执行操作,NSOperation对象默认按同步方式执行,也就是在调用start方法的那个线程中直接执行。NSOperation对象的isConcurrent方法会告诉我们这个操作相对于调用start方法的线程,是同步还是异步执行。isConcurrent方法默认返回NO,表示操作与调用线程同步执行 3.取消操作 operation开始执行之后, 默认会一直执行操作直到完成,我们也可以调用cancel方法中途取消操作 复制代码 代码如下: [operation cancel]; 4.监听操作的执行 如果我们想在一个NSOperation执行完毕后做一些事情,就调用NSOperation的setCompletionBlock方法来设置想做的事情 复制代码 代码如下: pletionBlock = ^() { NSLog(@执行完毕); }; 或者 复制代码 代码如下: [operation setCompletionBlock:^() { NSLog(@执行完毕); }]; 二、NSInvocationOperation 1.简介 基于一个对象和selector来创建操作。如果你已经有现有的方法来执行需要的任务,就可以使用这个类 2.创建并执行操作 复制代码 代码如下: // 这个操作是:调用self的run方法 NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(run) object:nil]; // 开始执行任务(同步执行) [operation start]; 三、NSBlockOperation 1.简介 能够并发地执行一个或多个block对象,所有相关的block都执行完之后,操作才算完成 2.创建并执行操作 复制代码 代码如下: NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^(){ NSLog(@执行了一个新的操作,线程:%@, [NSThread currentThread]); }]; // 开始执行任务(这里还是同步执行) [operation start]; 3.通过addExecutionBlock方法添加block操作 复制代码 代码如下: NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^(){ NSLog(@执行第1次操作,线程:%@, [NSThread currentThread]); }]; [operation addExecutionBlock:^() { NSLog(@又执行了1个新的操作,线程:%@, [NSThread currentThread]); }]; [operation addExecutionBlock:^() { NSLog(@又执行了1个新的操作,线程:%@, [NSThread currentThread]); }]; [operation addExecutionBlock:^() { NSLog(@又执行了1个新的操作,线程:%@, [NSThread currentThread]); }]; // 开始执行任务 [operation start]; 打印信息如下: 2

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档