NSOperation和NSOperationQueue-05

NSOperation是一个基类,不能直接使用,可以自定义继承于NSOperation,或者使用它的子类NSIvocationOperation和NSBlockOperation。

1》NSOperation是一个任务操作,创建后,需要调用start方法才能开启操作,执行着的任务操作不能cancel、暂停,只能cancel、暂停等待中

  的任务。

2》自定义operation的话,需要重写main或者start方法,因为start方法默认会调用main方法。注意要控制好内存问题,最好用自动释放池

  autorelease。

3》NSOperation默认是同步的,因为它属性isConcurrent(readonly,现在是isAsynchronous=0)默认为NO。

NSOperationQueue是管理operation的,把操作任务添加到队列中,队列会自动去调用任务的start方法,而start又会去调用main方法。

1》NSOperationQueue默认的最大并发数是-1,就是没有限制,所以默认是并发的队列,是异步执行的。

2》如果设置最大并发数为1,就成了并发的队列,同步执行的。

时间: 2024-08-03 06:14:36

NSOperation和NSOperationQueue-05的相关文章

IOS中的多线程【二】— NSOperation和NSOperationQueue

NSOperationQueue是一套基于Objective-c语言的API. GCD与NSOperationQueue的优缺点: NSOperationQueue:比较安全 GCD:没有NSOperationQueue安全,但使用起来简单,快速,还提供了一些操控底层的方法.实际开发中还是以GCD为主. NSOperationQueue实现多线程流程 1.定义一个任务队列. 2.定义一个任务. 3.把任务添加到队列中.一旦任务被添加到队列中,任务会马上被调度执行. 任务队列(NSOperatio

多线程之NSOperation和NSOperationQueue

这篇文章里我将不过多的谈及理论知识,这些东西会的自然会,不会的,看多了也是云里雾里.下面我讲更多的用代码+注释的方式来讲如何使用NSOperation和NSOperationQueue. 1.NSOperation.是抽象类,不能够直接使用,而是使用子类NSInvocationOperation和NSBlockOperation来实际执行任务.NSOperation本身和多线程是没有任何关系的,她只是封装了一个代码段和数据去实现一个功能. 1.1.NSInvocationOperation,基于

ios多线程之NSOperation和NSOperationQueue

NSOperation的作用 配合使用NSOperation和NSOperationQueue也能实现多线程编程 1.NSOperation和NSOperationQueue实现多线程的具体步骤 2.先将需要执行的操作封装到一个NSOperation对象中 3.然后将NSOperation对象添加到NSOperationQueue中 4.系统会自动将NSOperationQueue中的NSOperation取出来 5.将取出的NSOperation封装的操作放到一条新线程中执行 NSOperat

使用NSOperation和NSOperationQueue实现多线程编程

使用NSOperation和NSOperationQueue实现多线程编程,实现步骤大致是这样的: 1> 先将需要执行的操作封装到一个NSOperation对象中 2> 然后将NSOperation对象添加到NSOperationQueue中 3> 系统会自动将NSOperation中封装的操作放到一条新线程中执行 回到顶部 一.NSInvocationOperation 1 NSInvocationOperation *operation = [[[NSInvocationOperat

Swift - 多线程实现方式(2) - NSOperation和NSOperationQueue

1,Swift继续使用Object-C原有的一套线程,包括三种多线程编程技术: (1)NSThread (2)Cocoa NSOperation(NSOperation和NSOperationQueue) (3)Grand Central Dispath(GCD) 2,本文着重介绍Cocoa NSOperation Cocoa NSOperation不需要关心线程管理和数据同步的事情,可以把精力放在自己需要执行的操作上.相关的类有NSOperation和 NSOperationQueue.其中N

用NSOperation和NSOperationQueue实现多线程编程

1.上一讲简单介绍了NSThread的使用,虽然也可以实现多线程编程,但是需要我们去管理线程的生命周期,还要考虑线程同步.加锁问题,造成一些性能上的开销.我们也可以配合使用NSOperation和NSOperationQueue实现多线程编程,实现步骤大致是这样的: 1> 先将需要执行的操作封装到一个NSOperation对象中 2> 然后将NSOperation对象添加到NSOperationQueue中 3> 系统会自动将NSOperation中封装的操作放到一条新线程中执行 在此过

iOS多线程编程之NSOperation和NSOperationQueue的使用(转自容芳志专栏)

转自由http://blog.csdn.net/totogo2010/ 使用 NSOperation的方式有两种, 一种是用定义好的两个子类: NSInvocationOperation 和 NSBlockOperation. 另一种是继承NSOperation 如果你也熟悉Java,NSOperation就和java.lang.Runnable接口很相似.和Java的Runnable一样,NSOperation也是设计用来扩展的,只需继承重写NSOperation的一个方法main.相当与ja

使用NSOperation以及NSOperationQueue

NSOperation vs. Grand Central Dispatch (GCD) 在Mac OS X v10.6和iOS4之前,NSOperation 与 NSOperationQueue 不同于GCD,他们使用了完全不同的机制. 从Mac OS X v10.6和iOS4开始,NSOperation 和 NSOperationQueue是建立在GCD上的.作为一种通例,苹果推荐使用最高级别的抽象,然而当评估显示有需要时,会突然降到更低级别. 以下是对两者的快速比较,它会帮助你决定何时何地

NSOperation 和NSOperationQueue使用

示例项目的功能就是用tableview来展示经过滤镜处理的图片.图片会从网络下载,然后添加滤镜,最后展示在tableview中. 下面是应用的示意图: 初始模型 第一次尝试 下载 示例工程 . 注意:所有图片来源于 stock.xchng .一些图片有意的拼错名字,用来测试下载失败的情况. 运行工程,(最终)你会看到应用展示一列图片.试着滚动列表.很痛苦,不是吗? 所有的动作都发生在 ListViewController.swift 中,并且大多数都在 tableView(_:cellForRo

【iOS开发-91】GCD的同步异步串行并行、NSOperation和NSOperationQueue一级用dispatch_once实现单例(转载)

(1)GCD实现的同步异步.串行并行. ——同步sync应用场景:用户登录,利用阻塞 ——串行异步应用场景:下载等耗时间的任务 /** * 因为是异步,所以开通了子线程,但是因为是串行队列,所以只需要开通1个子线程(2),它们在子线程中顺序执行.最常用. */ -(void)gcdDemo1{ dispatch_queue_t q1=dispatch_queue_create("com.hellocation.gcdDemo", DISPATCH_QUEUE_SERIAL); for