NSOperationQueue And NSOperation

前言

iOS实现多线程的方式主要有三种,分别是NSThread、NSOperation、GCD。对于其他更底层的方式,我们通常不会使用到,特别厉害的高手才会去使用最底层的API。我们这里一起来学习NSOperationQueue和NSOperation相关知识。

关于GCD方面的知识,如果感兴趣,可以到GCD深入浅出学习阅读,这篇文章是专门讲GCD的,知识点也是慢慢深入。

简介

NSOperation封装了需要执行的操作和执行操作所需的数据,提供了并发或非并发操作,可以设置最大并发数,取消操作等。

iOS使用NSOperation的方式有两种:

直接使用系统提供的两个子类:NSInvocationOperation和NSBlockOperation

继承于NSOperation,自定义操作

我们日常在项目中,通常使用Operation使用自定义方式比较多,对于我个人而言,一直都是使用自定义的。比较做上传、下载功能,都会自定义Operation。

注意:大家都说NSOperation是抽象类,这里所说的抽象类不是真正的抽象类,不像C++那种纯虚函数,不能实例化。在Ojbective-C中是没有纯虚函数的,因此它是可以实例化的。只是由于没有提供任务接口,因此实例化了也没有意义,像下面这样直接使用是没有意义的:

NSOperation*op=[[NSOperationalloc]init];

注意:我们不能直接使用NSOperation这个类,这个类相当于一个抽象类,不能直接实例化NSOperation来使用,可以直接使用系统提供的NSInvocationOperation和NSBlockOperation,也可以自定义opration。

NSOperation基类API

下面简单说明NSOperation所提供的一些操作。

1.执行任务

NSOperation提供了start方法开启任务执行操作,NSOperation对象默认按同步方式执行,也就是在调用start方法的那个线程中直接执行。

if(!operation.isExecuting){

[operationstart];

}

但是,当我们使用NSOperationQueue时,将operation添加到queue中,任务会自动开启,任务会在异步线程去执行任务。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容