• Objective-c学习笔记3


    objective-c代码块多并发

    1.代码块对象是对C语言中函数的扩展,除了函数中的代码,代码块还包含有变量绑定,代码块有时也被称为闭包

     

    2.代码块包含两种绑定类型,自动绑定使用的是栈空间,托管绑定使用的是对空间

     

    3.代码块不属于ansi的c语言标准

     

    4.代码块特征如下 1.返回类型可以手动声明也可以编译器自动推导,具有指定类型的参数列表 ,拥有名称,代码块的实例如下

    void (^代码块名称)(参数类型 参数);

     

    5.代码块的实现如下

    void (^代码块名称)(参数类型 参数) = ^代码块名称

    {

    代码块实现

    }

     

    6.代码块只有在定义的时候才需要^符号,在使用的时候可以当成一般函数来使用

     

    7.代码块可以访问与他同时创建的有效变量

     

    8.使用typedef关键字可以简化代码块定义

    typedef double (^代码块名)(参数列表)

    然后就可以 代码块名 代码块实例 = ^(参数列表){实现}

     

    9.代码块可以访问函数用到的标准类型的变量,包括本地变量,全局变量,参数变量和_block变量,代码块内部的本地变量

     

    10.本地变量被代码块获取是作为常量被获取的,也就是说不能修改值,要是想修改值的话,必须将他们声明为可修改的_block

     

    11.部分变量不能被声明为block的,包括长度可变的数组,包含长度可变数组的结构体

     

    12.苹果引入了GCD技术实现系统级别的线程管理

     

    13.@synchronization可以对代码进行临界区保护

     

    14.如果定义了一个属性没有指定关键字nonatomic,编译器自动生成的getset方法是互斥的,可以使用@nonatomic关键字指定互斥级别

     

    15.想让一段代码在后台执行可以使用NSObject的performSelectorInBackground:withObject方法

     

    16.在后台执行的方法不能带返回值,要么只有一个参数,要么没有参数

     

    17.oc的调度队列分为三种,分别是连续队列,并发队列,主队列,连续队列按照fifo原则进行,并发队列按照优先级执行,但是一次运行的任务量是不确定的,可以指定并发队列的三个优先级分别是high low default,如果想获得优先级,使用dispatch_get_global_queue方法,得到的结果分别是DISPATCH_QUEUE_PROORITY_HIGH DISPATCH_QUEUE_PROORITY_LOW DISPATCH_QUEUE_PROORITY_DEFAULT

    18.获取当前队列 dispatch_get_current_queue

    19.队列的调度最好使用的是代码块

    20.关于多线程的事情后期补充

  • 相关阅读:
    访问H2数据库的SpringBoot工程
    Spring Annotations
    衡量技术/工具好坏的标准
    Maven Waring : GroupId is duplicate of parent groupId 和 Version is duplicate of parent version
    MyEclipse中,使用Maven新建web项目后,提示The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
    Java Web报错:The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
    maven项目,代码正确的情况下,整个项目中的类报cannot be resolved to a type 错误
    day46_Webservice学习笔记_02
    CentOS6 PXE+Kickstart无人值守安装
    快速诊断Linux性能
  • 原文地址:https://www.cnblogs.com/dengxiaojun/p/4582082.html
Copyright © 2020-2023  润新知