zoukankan      html  css  js  c++  java
  • 黑马程序员——Block数据类型

        Block数据类型,又被称为代码段。因为它可以封装一段代码。苹果官方建议多用block。因为在多线程控制、异步任务,集合遍历、集合排序、动画转场等方面用的很多。

    Block的特点:

                   1.Block 用于封装一段代码,并可以在任何时候执行。

                   2.Block 可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值。

    Block的定义:

                 例:int(^sum)(int ,int) = ^(int a,int b){

                         return a+b;

                       }

    从形势上看和指向函数的指针比较像

                  例:int(*p)(int,int) = sum;   //指针p 指向sum函数

    他们之间也是有共同点的:

                   1.都可以保存代码;2.都有返回值;3.都有形参;4.调用方式 一样。

    用typedef 定义block类型:

       typedef  int(^MyBlock)(int,int);          //重新定义 后就可以用MyBlock定义新变量了。

     MyBlock   sumBlock=^(int a,int b ){

                     return a+b;

                    };

    注意点:

            在默认的情况下block内部可以访问外部的局部变量,不能修改。

             给外部的局部变量加上__block(block前有两个_连在一块)关键字后,这个局部变量就可以在block内部修改了。

    例:  __block int sum = 10;       

          int (^MyBlock)(int)=^(int num){

            sum++;

    return num+sum;

    };

  • 相关阅读:
    F. 数学上来先打表
    LibreOJ β Round #2
    noip飞扬的小鸟
    jxoi2017
    分块算法
    Chino的数列
    cf 613E
    cf 126D
    cf 542E
    cf 512D
  • 原文地址:https://www.cnblogs.com/newbee010/p/4348595.html
Copyright © 2011-2022 走看看