zoukankan      html  css  js  c++  java
  • 多线程

     你用过NSOperationQueue么?如果用过或者了解的话,你为什么要使用NSOperationQueue,实现了什么?请描述它和GCD的区别和类似的地方(提示:可以从两者的实现机制和适用范围来描述)。

    1> GCD是纯C语言的API,NSOperationQueue是基于GCD的OC版本封装

    2> GCD只支持FIFO的队列,NSOperationQueue可以很方便地调整执行顺序、设置最大并发数量

    3> NSOperationQueue可以在轻松在Operation间设置依赖关系,而GCD需要写很多的代码才能实现

    4> NSOperationQueue支持KVO,可以监测operation是否正在执行(isExecuted)、是否结束(isFinished),是否取消(isCanceld)

    5> GCD的执行速度比NSOperationQueue快

    任务之间不太互相依赖:GCD

    任务之间有依赖或者要监听任务的执行情况:NSOperationQueue

    既然提到GCD,那么问一下在使用GCD以及block时要注意些什么?它们两是一回事儿么?block在ARC中和传统的MRC中的行为和用法有没有什么区别,需要注意些什么?

    Block的使用注意:

    1>   block的内存管理

    2>   防止循环retian

    l  非ARC(MRC):__block

    l  ARC:__weak\__unsafe_unretained

  • 相关阅读:
    InChatter系统之服务器开发(一)
    InChatter系统开源聊天模块前奏曲
    System.Lazy<T>延迟加载
    系统的层级架构
    Android网络通信库Volley简介(转)
    switch case 忘记 break
    switch case 忘记 break
    C# Lock 解读
    JSON资料整理(转载)
    [Leetcode]253. 会议室 II(数组/堆)
  • 原文地址:https://www.cnblogs.com/it-k-50/p/6093650.html
Copyright © 2011-2022 走看看