zoukankan      html  css  js  c++  java
  • iOS学习_NSOperationQueue和NSOperation学习笔记

     

    使用步骤 :

    (1)   封装要执行的任务

    (2)   创建队列

    (3)   添加操作到队列中

    队列(NSOperationQueue)常见的方法 :

    取消所有操作 :[queue cancelAllOperations];

    队列的暂停 : [queue setSuspended : YES]; 用户在开始滚动的时候可以暂停下载图片操作

    队列的恢复 : [queue setSuspended: NO]; 用户在停止滚动的时候开始下载图片操作

    队列也可以直接添加操作 : [queue addOperationWithBlock: ^{}];

    获取主队列 :[NSOperationQueue mainQueue];

    操作依赖 : [operationA addDependency:operationB];//可以在不同的queue的NSOperation之间创建依赖,但是不能相互依赖

    监听操作 : operation.completionBlock = ^{};

     

    NSInvocationOperation与NSBlockOperation 相同点 :

    (1)  不添加操作没有放在queue中,是在当前的线程同步执行。

    (2) 都要调用start方法才能执行

    (3) 如果添加到queue中是不用调用start方法的

     

    NSInvocationOperation与NSBlockOperation 不同点

    (1) NSBlockOperation 不放在queue中也可以开线程,使用  [blockOperation addExecutionBlock:^(void)block]

     

    自定义NSOperation的步骤和注意 :

    (1)   必须实现main函数,在main方法实现具体的操作。

    (2)   main方法里面写一个@autoreleasepool方法

    (3)   在比较耗时的代码的时候就要判断(isCancelled)一下是否已经被取消

     

    相关知识点和注意点 :

    (1)   NSOperation 是一个抽象类,并不具备封装操作的能力,必须能使用它的子类,必须实现main方法

    (2)   NSOperation子类类型有 :NSBlcokOperation、NSInvocationOperation、自定义(OPeration)

    (3)   最大并发数maxConcurrentOperationCount :最多开的线程操作数,一般设置为2~3;

    (4)   插入字典中最好判断一下是否为空

     

  • 相关阅读:
    再见,我的二零一七
    Tomcat 源码分析(二)——Request处理全过程
    帅案之上——作为开发者的远见与卓识
    Tomcat 源码分析(一)——启动与生命周期组件
    从代码质量谈起
    Java设计模式(四)——再谈观察者模式
    你所不了解的五条面试忠告
    见微知著——从自定义类型的operator==说起
    编码、散列与加解密
    数据结构与算法(c++)——双缓存队列
  • 原文地址:https://www.cnblogs.com/TangKaiFu/p/4449099.html
Copyright © 2011-2022 走看看