美文网首页
NSOperationQueue And NSOperation

NSOperationQueue And NSOperation

作者: Ash_Gao | 来源:发表于2016-07-11 13:47 被阅读22次

    前言

    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中,任务会自动开启,任务会在异步线程去执行任务。

    相关文章

      网友评论

          本文标题:NSOperationQueue And NSOperation

          本文链接:https://www.haomeiwen.com/subject/twcjjttx.html