zoukankan      html  css  js  c++  java
  • GCD

    GCD补充

    有 3 种分派队列: 

    Main Queue

    这个队列在主线程上执行它的所有任务,Cocoa 和 Cocoa Touch 允许程序员在主线程上调用一切UI- related 方法。使用 dispatch_get_main_queue 函数检索到主队列的句柄。


    Concurrent Queues为了执行异步和同步任务,你可以在 GCD 中检索到这写队列。多个并发队列能够轻而易举的并行执行多

    个任务,没有更多的线程管理,酷!使用 dispatch_get_global_queue 函数检索一个并发队列的句柄。


     Serial Queues

    无论你提交同步或者异步任务,这些队列总是按照先入先出(FIFO)的原则来执行任务,这就意味着它 们一次执行一个 Block Object。然而,他们不在主线程上运行,所以对于那些要按照严格顺序执行并不阻塞主 线程的任务而言是一个完美的选择。使用 dispatch_queue_create 函数创建一个串行队列。一旦你使用完整队 列,必须使用 dispatch_release 函数释放它



    这儿简单总结关于 Block Objects 变量你必须了解的特点:

    1、局部变量在 Block Objects 和 Objective-C 方法中的工作原理非常相似。


    2、对于内联 Block Objects,局部变脸不仅包含 Block 内部定义的变量,并且包含在 Block Objects 执行方法中定义的变量。


    3、你不能参考 self;在 Objective-C 类中运行的独立 Block Objects,如果你需要访问 self, 就必须把 Object作为参数传递到 BlockObject


    4、只有当 self 出现在创建 Block Object 的词法范围内,你可以在内联 Block Object 内参考 self。


    5、对于内联 Block Objects,那些在 BlockObject 执行过程中定义的局部变量是可读写的,换句话说,对于Block Objects 自身的局部变量来说,Block Objects 有个读写存取。


    6、对于内联 Block Objects,实现 Object 的 Objective-C 方法的局部变量只能从中读取,不能写入。不过还有一个例外,如果定义它们通过 __block 存储类型定义的话,Block Object 可以写入此类的变

    量。


    7、假设你有一个类 NSObject 的 Object,并且在这个 Object 的执行中你使用了一个 Block Object 与 GCD相连,那么在这个 Block Object 内部,你会有一个存储来读取那个支持你的 Block 执行的 NSObject内部的声明属性。

  • 相关阅读:
    centos7配置ntp服务器和客户端同步
    搭建Loki、Promtail、Grafana轻量级日志系统(centos7)
    DBLink实现备份文件不落盘的导入其他Oracle数据库实例的方法
    jumpserver使用docker安装
    shellwhile循环读取文件内容
    WEB数据挖掘(八)——Aperture数据抽取(4):Aperture整体结构
    WEB数据挖掘(十)——Aperture数据抽取(6):在Aperture中使用RDF2Go
    matlab练习程序(五次多项式轨迹规划)
    Android与Windows 7比拼悄然开始
    谷歌称年底前至少有18款Android手机上市
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3071940.html
Copyright © 2011-2022 走看看