zoukankan      html  css  js  c++  java
  • NSOperation、NSOperationQueue(III)

    NSOperation、NSOperationQueue 常用属性和方法归纳

    NSOperation 常用属性和方法

    a. 取消操作方法

    //可取消操作,实质是标记 isCancelled 状态。
    - (void)cancel; 

    b. 判断操作状态方法

    1 - (BOOL)isFinished; 判断操作是否已经结束。
    2 
    3 - (BOOL)isCancelled; 判断操作是否已经标记为取消。
    4 
    5 - (BOOL)isExecuting; 判断操作是否正在在运行。
    6 
    7 - (BOOL)isReady; 判断操作是否处于准备就绪状态,这个值和操作的依赖关系相关。

    c. 操作同步

    1 - (void)waitUntilFinished; 阻塞当前线程,直到该操作结束。可用于线程执行顺序的同步。
    2 
    3 - (void)setCompletionBlock:(void (^)(void))block;completionBlock 会在当前操作执行完毕时执行 completionBlock。
    4 
    5 - (void)addDependency:(NSOperation *)op; 添加依赖,使当前操作依赖于操作 op 的完成。
    6 
    7 - (void)removeDependency:(NSOperation *)op; 移除依赖,取消当前操作对操作 op 的依赖。
    8 
    9 @property (readonly, copy) NSArray<NSOperation *> *dependencies; 在当前操作开始执行之前完成执行的所有操作对象数组。

    10.2 NSOperationQueue 常用属性和方法

    a. 取消/暂停/恢复操作

    1 - (void)cancelAllOperations; 可以取消队列的所有操作。
    2 
    3 - (BOOL)isSuspended; 判断队列是否处于暂停状态。 YES 为暂停状态,NO 为恢复状态。
    4 
    5 - (void)setSuspended:(BOOL)b; 可设置操作的暂停和恢复,YES 代表暂停队列,NO 代表恢复队列。

    b. 操作同步

    1 - (void)waitUntilAllOperationsAreFinished; 阻塞当前线程,直到队列中的操作全部执行完毕。

    c. 添加/获取操作

    1 - (void)addOperationWithBlock:(void (^)(void))block; 向队列中添加一个 NSBlockOperation 类型操作对象。
    2 
    3 - (void)addOperations:(NSArray *)ops waitUntilFinished:(BOOL)wait; 向队列中添加操作数组,wait 标志是否阻塞当前线程直到所有操作结束
    4 
    5 - (NSArray *)operations; 当前在队列中的操作数组(某个操作执行结束后会自动从这个数组清除)。
    6 
    7 - (NSUInteger)operationCount; 当前队列中的操作数。

    d. 获取队列  

    注意:

    a. 这里的暂停和取消(包括操作的取消和队列的取消)并不代表可以将当前的操作立即取消,而是当当前的操作执行完毕之后不再执行新的操作。

    b. 暂停和取消的区别就在于:暂停操作之后还可以恢复操作,继续向下执行;而取消操作之后,所有的操作就清空了,无法再接着执行剩下的操作。

    1 + (id)currentQueue; 获取当前队列,如果当前线程不是在 NSOperationQueue 上运行则返回 nil。
    2 + (id)mainQueue; 获取主队列。
  • 相关阅读:
    [编程题] 数组中重复的数字
    [编程题] 用两个栈实现队列
    杜教筛学习笔记
    二次剩余学习小记
    Burnside引理和Polya定理简单入门
    6553. 【GDOI2020模拟4.11】人生
    6545. 【GDOI2020模拟4.8】 Exercise
    2020.4.5学军信友队趣味网络邀请赛总结
    51 Nod 1287 加农炮(单调队列思想+二分)
    51 Nod 1070 Bash游戏v4(斐波那契博弈)
  • 原文地址:https://www.cnblogs.com/EchoHG/p/8685820.html
Copyright © 2011-2022 走看看