block 简单使用

    int minus = 7;

    int(^myBlock)(int) = ^(int num ){

        int i = num *minus;

        NSLog(@"---%d",i);

        return i;

    };

   int t= myBlock(10);

    NSLog(@"-t==%d",t);


 1.int为返回类型

2. myBlock 为block名字

3。后面的int 为传入参数类型

4。int num 传入参数 


  1. block里面使用变量遵循以下规则:

  1. 全局变量可访问,包括在相同作用域范围内的静态变量。

  2. 传递给block的参数可访问(和函数的参数一样)。

  3. 程序里面属于同一作用域范围的堆(非静态的)变量作为const变量(即只读)。

    它们的值在程序里面的 block表达式内使用。在嵌套block里面,该值在最近的

    封闭范围内被捕获。

  4. 属于同一作用域范围内并被__block存储修饰符标识的变量作为引用传递因此是

    可变的。

  5. 属于同一作用域范围内block的变量,就和函数的局部变量操作一样。

    每次调用 block都提供了变量的一个拷贝。这些变量可以作为const来使用,或在block封闭范围内作为引用变量。



        数组

        void (^blocks[])(void) ={ ^(void){puts("hello");} ,

            ^(void){puts("hell1111");}};

        

        blocks[1](),blocks[0]();


        __block

        static int s = 10;

       __block int local =200;

        void(^p)(void) = ^(void) {

            printf("%dn",local +global);

            global ++;

            s++;

            local -- ;

        };


        p();

        printf("after local %d, global %d , s %d", local, global,s);

     

      递归  

        void (^p)(int) = 0;

        static void (^ const blocks)(int) = ^(int i ){

            if (i>0) {

                printf("hello\n");

                blocks(i-1);

            }

        };

        p= blocks;

        p(3);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值